【】C++如何用16进制的公钥字符串进行RSA加密?
【高分求教】C++怎么用16进制的公钥字符串进行RSA加密???
java加密方法如下:
我在网上找了很多大数实现的RSA,但是每次加密出来的结果都是一样的,但用java加密每次结果都不一样
在此请教各位高手,用c++怎么实现以上java代码一样的功能,最好不要用openssl、crypt++等加密库
问题解决马上结贴,谢谢
------解决方案--------------------
为何不用Openssl,你把代码摘出来也可以。
------解决方案--------------------
如果用openssl, 这个代码完全就是改一下函数名, 及调用方式等.
------解决方案--------------------
为什么不用现成的库?
------解决方案--------------------
怎么可能,相同的公钥,相同的信息,加密出来的结果肯定一样
------解决方案--------------------
Openssl现成的库。
------解决方案--------------------
试试看
------解决方案--------------------
6楼的说法很正确,每次加密结果不一样,RSA就蛋疼了,还商用和毛。
RSA的算法部分已经有现成的代码了。
而且加密解密流程很清楚。
楼主去看看加密解密的流程吧。语言不是问题。
理解公钥,私钥,和加解密过程是最重要的。至于实现,交给别人的库做去吧
------解决方案--------------------
这个是正常的,RSA的加密数据时候要做padding,padding的算法决定了結果是否相同
一般测试的时候会用一个固定的padding算法,正式用的时候会用随机的padding算法
解密的时候会自动把padding去掉的
你如果要测试,最好看看有没有提供不带padding的算法
java加密方法如下:
String modeHex = "D548C6267CC503F1E926776A97F8644CAA67167E8FA5D74FD1F4E0BCB3608BD1583E41B102B5B4617E53B90A0C67EA652F8D96B40CFDDA6BC1501432ADCE15E4B5B916568893C94FF3CAC5ED5942FC604BAD1B12DF7683B25C6702BD8CF1BE2F5A4FFC97C82E42FD91E49A6EFF379F5F022F36E5395D64FC9430EEFCAC55F0A5";
String exponentHex = "10001";
KeyFactory factory = KeyFactory.getInstance("RSA");
BigInteger n = new BigInteger(modeHex, 16);
BigInteger e = new BigInteger(exponentHex, 16);
RSAPublicKeySpec spec = new RSAPublicKeySpec(n, e);
RSAPublicKey pub = (RSAPublicKey) factory.generatePublic(spec);
Cipher enc = Cipher.getInstance("RSA");
enc.init(Cipher.ENCRYPT_MODE, pub);
byte[] encryptedContentKey = enc.doFinal(messageg.getBytes("GB2312"));
String result = new String(Hex.encodeHex(encryptedContentKey));
我在网上找了很多大数实现的RSA,但是每次加密出来的结果都是一样的,但用java加密每次结果都不一样
在此请教各位高手,用c++怎么实现以上java代码一样的功能,最好不要用openssl、crypt++等加密库
问题解决马上结贴,谢谢
c++
加密
RSA
------解决方案--------------------
为何不用Openssl,你把代码摘出来也可以。
------解决方案--------------------
如果用openssl, 这个代码完全就是改一下函数名, 及调用方式等.
------解决方案--------------------
为什么不用现成的库?
------解决方案--------------------
怎么可能,相同的公钥,相同的信息,加密出来的结果肯定一样
------解决方案--------------------
Openssl现成的库。
------解决方案--------------------
String modeHex = "\uD548\uC626\u7CC5\u...\uF0A5";
String exponentHex = "\u0001\u0001";
试试看
------解决方案--------------------
6楼的说法很正确,每次加密结果不一样,RSA就蛋疼了,还商用和毛。
RSA的算法部分已经有现成的代码了。
而且加密解密流程很清楚。
楼主去看看加密解密的流程吧。语言不是问题。
理解公钥,私钥,和加解密过程是最重要的。至于实现,交给别人的库做去吧
------解决方案--------------------
这个是正常的,RSA的加密数据时候要做padding,padding的算法决定了結果是否相同
一般测试的时候会用一个固定的padding算法,正式用的时候会用随机的padding算法
解密的时候会自动把padding去掉的
你如果要测试,最好看看有没有提供不带padding的算法