Java 等同于 C++ 加密

标签 java c++ encryption openssl

<分区>

我有以下用于加密的 c++ 代码片段:

EVP_CIPHER_CTX ctx;
const EVP_CIPHER * cipher = EVP_des_ede3_cbc();
unsigned char iv[EVP_MAX_IV_LENGTH];
unsigned char key[EVP_MAX_KEY_LENGTH];
String seed;

_config->get_value("crypto_seed", &seed); // uses the seed value from pimp config.

if (seed.is_empty())
{
    return false;
}

EVP_BytesToKey(cipher, EVP_sha1(),
        (unsigned char *) 0, // no salt
        reinterpret_cast<unsigned char *>(const_cast<char *>(seed.chars())), seed.length(),
        1, // hash passphrase just once.
        key, iv);

EVP_CIPHER_CTX_init(&ctx);
EVP_CipherInit_ex(&ctx, cipher, (ENGINE *) 0, key,
        iv,
        1); // encrypt

Java 中的 c++ 加密等价于什么?

我看到有des算法,然后我看到sha1

这个和openssl加密有关。但不确定什么是等效的。本质上,我想要与 C++ 代码生成的输出相同。

我在问什么是 EVP_CIPHER_CTX 的等价物,或者这里使用的加密名称是什么,所以我可以从那里获取它。

编辑:不要求任何人将代码转换为 java,只要求相应的包或类做同样的事情。

最佳答案

其中最棘手的部分是 EVP_BytesToKey 部分,之前已重新创建。

How to decrypt file in Java encrypted with openssl command using AES?

我这里还有一个面向对象的版本,如果您真的不会使用类似 C 的代码的话。对于 SHA-1,使用 SHA-1 而不是 MD5...

至于加密,只需使用 "DESede/CBC/PKCS5Padding" 作为您的 Cipher.getInstance() 方法的算法名称,您应该没问题。

关于Java 等同于 C++ 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12920740/

相关文章:

java - 三个 float 的概率

java - 从 java 调用编译的 C++ exe 文件不起作用

c++ - 当位(而不是字节)的顺序至关重要时的字节序

java - 无法在谷歌地图 Activity 中导航,它总是会生成回到我当前的位置

c++ - 如何从powerbuilder11.5调用win32 dll?

c++ - 如何在 C++ 中处理超过 8 字节或超过 20 位的大整数数据

php - 在用 PHP 将密码存储到 MySQL 时尝试加密

ruby - 如何使用私钥加密完全加密 Ruby 中的数据?

javascript - 如何使用CryptoJS进行加密以及如何使用Rust Magic Crypt进行解密

用于比较字符串的 Java 占位符