解密C#中的字符串,用Java加密

时间:2017-01-04 13:39:36

标签: java c# encryption cryptography aes

我有加密字符串的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;
 }

1 个答案:

答案 0 :(得分:1)

您无法生成解密密钥......您必须使用相同的密钥。因此,如果它是一个字符串,您必须将其存储在某处或以某种方式将其传递给您的对象,但解密密钥必须与加密密钥相同。