首页 / 知识
在Java中使用openssl加密
2023-04-17 03:27:00

Using openssl encryption with Java
我有一个传统的C ++模块,该模块使用openssl库(DES加密)提供加密/解密。 我正在尝试将该代码转换为Java,并且我不想依赖DLL,JNI等。
Java代码如下所示:
因此,我可以很轻松地用Java进行DES加密,但是如何使用完全不同的方法获得与上述代码相同的结果呢? 特别让我困扰的是C ++版本使用2个键,而Java版本仅使用1个键。
根据我的阅读,密钥应该是56位(或者64位,我不清楚),但是这里是48字节长。 另外,请记住,您实际上不应该在代码中使用sun.misc。*类。这可能会破坏其他VM,因为它们不是公共API。 Apache Commons编解码器(以及其他)具有不承担此问题的Base64实现。 我不太确定为什么单个DES会使用多个密钥。即使您使用的是Triple-DES,我相信您也可以使用单个密钥(具有更多字节的数据),而不是将单独的密钥与Java密码学API一起使用。 我不是OpenSSL专家,但是我猜C ++代码正在CBC模式下使用DES,因此需要一个IV(这就是initKey可能是的,这就是为什么您认为需要两个键)。如果我是对的,那么您还需要更改Java代码以在CBC模式下使用DES,那么Java代码也将需要加密密钥和IV。 算法应该匹配;如果得到不同的结果,则可能与处理键和文本的方式有关。还请记住,Java字符长2个字节,而C ++字符长1个字节,因此可能与此有关。 |
最新内容
相关内容
linux命令基础代码?
linux命令基础代码?,基础,系统,管理,工作,代码,网络,单位,信息,数据,命令,linux必学的60个命令安装和登录命令:login、shutdown、halt、rebootlinux打开代码命令行?
linux打开代码命令行?,系统,首页,工具,终端,代码,密码,情况,命令,快捷键,窗口,linux怎么打开命令行窗口在Linux系统中,打开命令行窗口需要使用linux克隆代码命令?
linux克隆代码命令?,系统,代码,文件,命令,目录,源文件,文件夹,路径,目标,表示,Linux文件拷贝命令?linux系统使用cp命令即可将一个文件夹里面的linux加密压缩命令?
linux加密压缩命令?,系统,网络,基础,管理,基础知识,积极,发展,下来,材料,电脑,linux基础知识有哪些1、Linux基础知识:了解Linux操作系统的基本linux加密压缩命令?
linux加密压缩命令?,系统,网络,基础,管理,基础知识,积极,发展,下来,材料,电脑,linux基础知识有哪些1、Linux基础知识:了解Linux操作系统的基本linux命令行调试代码?
linux命令行调试代码?,环境,代码,信息,平台,程序,编辑,版本,步骤,体系结构,处理器,linux怎么调试pythonLinux中如何安装Python?安装pycharmPychlinux编译源代码命令?
linux编译源代码命令?,工具,代码,百度,最新,环境,项目,系统,电脑,密码,内核,linux怎样编译git源码包1、linux的源码是在/usr/src这个目录下,此linux命令提交代码?
linux命令提交代码?,工作,系统,地址,代码,命令,数据,信息,目录,标准,发行,求助:LINUX常用SHELL命令你可以通过打开Linux的terminal(终端)来执行Slinux代码同步命令?
linux代码同步命令?,时间,服务,系统,地址,代码,网络,通信,图片,风险,管理,linux系统时钟同步命令1、因此使用ntpdate同步可能会引发风险,因此该linux命令错误代码?
linux命令错误代码?,系统,密码,电脑,网络,手机,网址,软件,代码,设备,老板,Linux管理常见错误1、检查权限:使用文件浏览器和终端,检查文件的访问linux同步代码命令?
linux同步代码命令?,时间,系统,通信,网络,标准,图片,服务,代码,线程,单位,Linux下线程同步的几种方法1、线程同步的方式包括:互斥锁、读写锁、linux拉取代码命令?
linux拉取代码命令?,代码,工作,地址,命令,数据,系统,单位,生产,软件,目录,linux下wsdl2java获取源码命令首先,连接相应linux主机,进入到linux命