0
Javaで埋め込みを行わずにCBCモードでBlowfish暗号化を使用して特定のStringを暗号化する必要があります。私はいくつかの研究を行っており、この質問を見つけました:encrypting and decrypting using java。JavaでCBCモードでBlowfishを使用した暗号化
私は、Cipherオブジェクトのinitメソッドで基本的なStringをキーとして使用する方法を知りたいと思います。この例では、keySpecはStringではなく、SHA-256で暗号化されたStringです。例では
:
keySpec
は私が必要なもの
SecretKeySpec
オブジェクト
ある
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
:私が使用していることを知っているkeyString
がString
オブジェクト
ある
cipher.init(Cipher.ENCRYPT_MODE, keyString, ivSpec);
基本的なストライngは自動生成よりも安全性が低くなります。しかし、私はどのようにキーとして文字列を使用できるか知っていますか?
私が試みたが、私はエラーがあります。私はときに「8バイトの入力の長さではない複数の」: バイト[]、暗号化= cipher.doFinal(token.getBytes())。 トークンの長さは8バイトの倍数である必要がありますか? – litil
私はブローフィッシュの専門家ではなく、インターネットは今日ストライキに乗っているので、すぐには1つにはならないが、afaikブローフィッシュには少なくとも32ビットのキーが必要です。しかし、8バイトの最小要件はかなり一般的です。なぜ私はあなたがそのような短いキーを使用する必要があるのか尋ねることができますか? – wallenborn
私のエラーが見つかりました。暗号化しようとする文字列には22文字が含まれ、その長さは8の倍数でなければなりません。したがって、パディングを使用する必要があると思います。どちらを使うべきですか? (私はPERLの標準のパディングと同じものを使用しなければならない) – litil