我有加密字符串的java代码。我必须在C#中解密该加密字符串。
C#代码:
public static String decrypt(String ciphertext) {
key = generateKey(SALT, ENCRYPTION_KEY);
byte[] decrypted = doFinal(Cipher.DECRYPT_MODE, key, IV, base64(ciphertext));
return new String(decrypted, "UTF-8");
}
private static byte[] doFinal(int encryptMode, SecretKey key, String iv, byte[] bytes) {
cipher.init(encryptMode, key, new IvParameterSpec(hex(iv)));
return cipher.doFinal(bytes);
}
private static SecretKey generateKey(String salt, String passphrase) {
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(passphrase.toCharArray(), hex(salt), ITERATION_COUNT, KEY_SIZE);
SecretKey key = new SecretKeySpec(factory.generateSecret(spec).getEncoded(), "AES");
return key;
}
答案 0 :(得分:1)
您无法生成解密密钥......您必须使用相同的密钥。因此,如果它是一个字符串,您必须将其存储在某处或以某种方式将其传递给您的对象,但解密密钥必须与加密密钥相同。