Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尚未共享SSL和开放SSL、Java和C++;,共同点?_Java_C++_Encryption_Openssl - Fatal编程技术网

尚未共享SSL和开放SSL、Java和C++;,共同点?

尚未共享SSL和开放SSL、Java和C++;,共同点?,java,c++,encryption,openssl,Java,C++,Encryption,Openssl,尚未发布的commons SLL Java包为OpenSSL对象提供了一种基于密码的加密方法: 加密(“des”、密码、数据) 据说此方法与OpenSSL C库兼容。我的问题是,OpenSSL C++方法与上面的java? 谢谢看起来像是最接近的并行程序。还没有Commons OpenSSL的密码与“OpenSSL enc”命令兼容。您的示例可以通过此命令解密 openssl enc -k password -a -d -des -in data.file 您可以从源代码复制代码 默认情况

尚未发布的commons SLL Java包为OpenSSL对象提供了一种基于密码的加密方法:

加密(“des”、密码、数据)

据说此方法与OpenSSL C库兼容。我的问题是,OpenSSL C++方法与上面的java?
谢谢

看起来像是最接近的并行程序。

还没有Commons OpenSSL的密码与“
OpenSSL enc
”命令兼容。您的示例可以通过此命令解密

  openssl enc -k password -a -d -des -in data.file
您可以从源代码复制代码


默认情况下,OpenSSL.encrypt()生成base64输出。使用OpenSSL.encrypt(alg、pwd、data、false)关闭该选项。

讲述我的OpenSSL/java体验:如果它不兼容,请仔细查看OpenSSL选项,有时有一个选项没有很好的文档记录,但它将使OpenSSL输出完全等同于java输出。示例:在生成椭圆曲线密钥时,添加“EC_KEY_set_asn1_flag(EC_KEY,OPENSSL_EC_NAMED_CURVE);”以在生成的公钥中使用曲线的名称(由java理解)而不是曲线的参数(仅由OPENSSL理解)。也许我可以更具体一些。在JavaI中,还没有通用SSL:encryptedString=OpenSSL.encrypt(“des-ede3-cbc”,passwordBytes,dataBytes);在C中的OpenSSL中,我可以执行如下操作:EVP_EncryptInit(&ctx,EVP_des_ede3_cbc(),(const unsigned char*)mykey,iv);EVP_EncryptUpdate(&ctx,密文,&out_len,(const unsigned char*)明文,in_len);EVP_EncryptFinal(&ctx,&ciphertext[out_len],&out_len);我的问题是,这些产生了截然不同的加密结果。事实上,java的结果是字节的3到4倍。@laura OpenSSL不鼓励使用较低级别的API,并希望每个人都使用EVP_PKEY。。。API。我无法在EVP_PKEY API中找到任何等价的
EC_KEY\u set\u asn1_标志(EC_KEY,OPENSSL_EC_NAMED_CURVE)
。你知道这方面有什么API吗?根据我所读到的内容,我认为EVP方法是使用OpenSSL的最佳方式。但是,尚未与commons OpenSSL Java对象兼容的OpenSSL模式/密码是什么?我知道Java和OpenSSL之间有重叠,但我不知道什么方法/模式可以创建兼容的加密,而且我对这个领域还是相当陌生的。