您的位置:首页 > 移动开发 > IOS开发

RSA使用总结(ios,openssl)

2016-06-15 17:12 323 查看
RSA:使用openssl库可方便实现RSA加解密,网上的资料很多,不详述。

密钥通常有两种方式,一种是字符串格式的公私钥,通常是-----BEGIN PUBLIC KEY-----开头,-----END
PUBLIC KEY-----结尾并且没有换行的字符串,这是PKCS8格式的;在这里,重点说第二种,就是使用N,E,D表示的密钥,其中(N,E)是公钥,(N,D)是私钥,加密使用(N,E),解密使用(N,D),使用openssl时,需要先构造RSA密钥数据结构,简单来说就是使用N,E,D三个参数中的两个来初始化一个密钥,通常使用N,E初始化为公钥用来加密和验签,使用N,D初始化为私钥用来解密和签名,http://download.csdn.net/detail/u014624795/9550509,详见这个文档。

再一个不得不说的东西就是填充方式,RSA加密的特点决定了一次加密的长度固定,比如1024位的密钥可加密128个字节的数据,如果你在加密时选择填充方式为RSA_NO_PADDING,那么你可以传入128个字节的明文数据进行加密,但是如果你选择了填充方式为RSA_PKCS1_PADDING,那么你能一次加密的明文长度就不能大于117个字节,否则加密失败。这是加密时,解密时,你需要选择和加密时相同的方式,如果你加密时是RSA_NO_PADDING,那解密时也应该是RSA_NO_PADDING,如果你加密时是RSA_PKCS1_PADDING,那解密时也应该是RSA_PKCS1_PADDING。RSA_NO_PADDING方式的加密如果长度不够128,解密的数据里除了有效数据外,其他的不一定全是0,而使用RSA_PKCS1_PADDING加密后,解密出来的数据就是原始数据,不会有无用的一对0还有富有迷惑性的其他的数据。总结一下,供参考。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: