問題タブ [libgcrypt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
479 参照

c - libgcrypt v1.5.0 でのコンパイラ警告

definedを使用してサンプル プログラムをコンパイルするとGCRYPT_NO_DEPRECATED、次の 6 つの警告が表示されます。

手動で定義_GCRYPT_IN_LIBGCRYPTすると 6 つの警告が解決されますが、マニュアルはその推奨事項においてかなり厳格です。

先頭にアンダースコアが 1 つ付いた名前プレフィックスは、内部使用のために予約されており、アプリケーションで使用しないでください。

では、警告なしで gcrypt ヘッダーをコンパイルするにはどうすればよいでしょうか?

0 投票する
2 に答える
557 参照

c - C Libgcrypt: libgcrypt を使用して数値が素数かどうかを確認できません

libgcrypt 関数を使用して、数値が素数gcry_prime_checkかどうかをテストしています。3関数によると、3 は素数ではないことがわかります。私は何を間違っていますか?

これが私のコードです

ここに出力があります

また、libgcrypt の使用に関する優れたチュートリアルへのリンクは、大きなボーナスになります。ありがとう

編集:

よし、 を使用して素数を生成しgcry_prime_generate、その値を にコピーしましたnumber。プライムチェックに失敗したことが判明しました。しかし、プライム生成からのmpi出力をプライムチェック関数に直接渡すと...パスします!!

0 投票する
1 に答える
715 参照

c - libgcrypt と Elgamal を使用して暗号化および復号化する際のデータ損失

Elgamal で Libgcrypt を使用してバイトのブロックを暗号化していますが、2 つの問題があります。

  1. パディングを使用せず、バイト ブロックが 0 バイトで始まると、復号化中に最初のバイトが失われます。

  2. パディングを使用すると暗号化はうまく機能しますが、復号化してもパディングは削除されません。そして、どうやら最初のゼロバイトがまだそこにあるようです。

RSAで私は同じ問題を抱えています:(

私のテスト コードはそこにあります: www.tiago.eti.br/storage/post.c そして、パディングを使用しません。

パディングを使用するには、次のように変更する必要があります。

そして、暗号化アルゴリズムの変更を変更するには:

コンパイルするには、次を使用する必要があります。

解決するにはどうすればよいですか?

0 投票する
1 に答える
468 参照

c - Libgcryptを使用したプログラムのメモリリーク

Libgcryptでいくつかのテストを行っていますが、valgrindを使用してメモリ使用量を確認すると、終了時に3,200バイトが使用されています。

使ってみました

しかし、valgrind valgrindは、私のコードからこの行についてのみ文句を言います。

Libgcryptの内部機能についてのvalgrind。

私のテストコードはここにあります:http : //www.tiago.eti.br/storage/post2.cそして私はDebiansidリポジトリからLibgcrypt1.5.0を使用しています

これはLibgcryptのバグですか、それとも何か問題がありますか?

0 投票する
2 に答える
1282 参照

c - c pkcs#7 標準による aes256 パディング

暗号化:

復号化:

pkcs#7 標準から取り外し可能なパディングを追加しようとしていますが、問題があります。
txt ファイルを扱う場合、プログラムは完全に動作しますが、 tar.gz または pdf ファイルを復号化しようとすると、復号化プログラムはファイル サイズの半分で停止します。
たとえば、サイズが 28272 バイトの tar.gz アーカイブを見てみましょう (prova は元のファイル、out は暗号化されたファイル、origdec は復号化されたファイルです)。

gnu/linux で libgcrypt を使用しています。

0 投票する
1 に答える
1942 参照

linux - gnutls configure エラー: libgcrypt をチェックしています...いいえ

libgpg-error と libgcrypt を構成してコンパイルしましたが、ルート権限がないため、インストール (make install) できませんでした。
libgnutls を構成しようとすると、このエラーが発生します。

config.logに、次のエラーがあります。

誰か助けてくれませんか?

0 投票する
3 に答える
1551 参照

c - libgcrypt を使用してパスワードからファイルを暗号化する

ファイルの aes256-cbc 暗号化を行う単純なソフトウェアを開発しています。GNU/Linux と libgcrypt-1.5.0 を使用しています。IV は OpenSSL の rand 関数でランダムに生成され、IV は出力ファイルの暗号文の前に保存されます。PKCS#7 パディング メソッドを使用しています。

今、私はどのように進めるかについて疑問があります:

  1. ファイルの暗号化には、入力したパスワードを 50,000 回繰り返した sha256 を使用する方が良いですか、それともユーザーが指定したパスワードを使用する方が良いですか?

  2. 入力したパスワードの正確性を確認したい場合は、暗号化されたファイル (明らかに暗号化されています) に保存する必要があります。これを行うのは正しいですか?

0 投票する
2 に答える
1915 参照

c - Key derivation using libgcrypt in C

I'm developing a simple software that do aes256-cbc file encryption. This software is developed on GNU/Linux using libgcrypt-1.5.0.

I want to use the above function with GCRY_KDF_PBKDF2 as algo and SHA512 as subalgo.

This function derive a key from a passphrase. keysize gives the requested size of the keys in octets. keybuffer is a caller provided buffer filled on success with the derived key. The input passphrase is taken from passphrase which is an arbitrary memory buffer of passphraselen octets. algo specifies the KDF algorithm to use; see below. subalgo specifies an algorithm used internally by the KDF algorithms; this is usually a hash algorithm but certain KDF algorithms may use it differently. salt is a salt of length saltlen octets, as needed by most KDF algorithms. iterations is a positive integer parameter to most KDFs.

I don't have understand three things about how to use this function:

  1. salt must be generate randomly so it must be put not encrypted into the output file, isn't it? (IV-CIPHERTEXT-SALT-MAC)
  2. saltlen has a correct "crypto" value or can i choose whatever i prefer? Like 10,20,30...
  3. keysize (in this case) must be 512, right?