私はJavaで同等のものを作成しようとしているC#のキーと塩を使ってStringをエンコードされたStringに変換するメソッドを使用しました。私は、すべての無駄とウェブ上の多くの異なる解決策を試みたJavaへのC#暗号化メソッド
public static string Encrypt<T>(string Value, string Key, string Salt) where T : SymmetricAlgorithm, new()
{
DeriveBytes deriveBytes = new Rfc2898DeriveBytes(Key, Encoding.Unicode.GetBytes(Salt));
SymmetricAlgorithm algorithm = new T();
byte[] keyBytes = deriveBytes.GetBytes(algorithm.KeySize >> 3);
byte[] ivBytes = deriveBytes.GetBytes(algorithm.BlockSize >> 3);
ICryptoTransform transform = algorithm.CreateEncryptor(keyBytes, ivBytes);
using (MemoryStream buffer = new MemoryStream())
{
using (CryptoStream stream = new CryptoStream(buffer, transform, CryptoStreamMode.Write))
{
using (StreamWriter writer = new StreamWriter(stream, Encoding.Unicode))
{
writer.Write(Value);
}
}
return Convert.ToBase64String(buffer.ToArray());
}
}
次のよう
C#の方法があります。私もサンプルがあります
value("YourId|YourFacId")
、 key("6JxI1HOSg7KQj4fJ1Xb3L1T6AVdLZLBAPFSqOjh2UoA=")
、
salt("FPSJxiSMpAavjKqyGvVe1A==")
これらのすべての上記の方法に送信されますが、バックの戻り文字列で来る:
"Y5w4A3pDZwTcq+FGyqUMO/mZSr6hSst8qiac9zDbfso9FQQbdTDsKnkKDT7SHl4y"
。
私の問題と一致するものはまだ見つかりませんでしたので、ここで助けを探しています。どんなリードも感謝します。ありがとう。
他の質問へのリンクは、私がまだ見ていないことは何も示していませんでした。私の例で扱うパスワードはありません。 は、ここでは、この時の私の多くの失敗した試みの一つである:使用
アルゴリズムは256ビットAesManaged次のとおりです。
private String encrypt(String user) throws Exception
{
Cipher deCipher;
Cipher enCipher;
SecretKeySpec key;
IvParameterSpec ivSpec;
String plainKey = "6JxI1HOSg7KQj4fJ1Xb3L1T6AVdLZLBAPFSqOjh2UoA=";
String salt = "FPSJxiSMpAavjKqyGvVe1A==";
String result = "";
ivSpec = new IvParameterSpec(salt.getBytes());
key = new SecretKeySpec(plainkey.getBytes(), "AES");
enCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] input = convertToByteArray(user);
enCipher.init(Cipher.ENCRYPT_MODE, key, ivSpec);
return new String(enCipher.doFinal(input).toString());
}
はここにJavaで暗号化を行う方法について、正当な(おそらく重複した)質問があるようですが、現在、これは、コード変換の問題のように見える、と人々反射的にdownvoteとクローズコードの翻訳の質問 –
'新しいT()'は何ですか? –
これは、デフォルトの反復回数でPBKDF2から派生したキーとIVを使用した単純なCBC暗号化です。それは何度も議論されました。 –