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还有富有迷惑性的其他的数据。总结一下,供参考。
密钥通常有两种方式,一种是字符串格式的公私钥,通常是-----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还有富有迷惑性的其他的数据。总结一下,供参考。
相关文章推荐
- iOS实现xml的post传递,返回xml数据进行解析
- iOS 申请加急审核
- iOS 使用cocoapods 找不到头文件
- ios中Search Paths的理解
- iOS原生api post上传图片,上传视频
- iOS启动图片配置及遇到的一些问题解决
- iOS设置文字过长时的显示格式
- iOS 开发中的 GCD 详细使用
- iOS 数字时钟(时间显示并持续更新)
- IOS-下载地址&评价地址
- iOS开发——支付宝
- ios开发跳转
- ios 内存使用陷阱
- iOS正则表达式 判断手机号 邮箱 电话 数字 身份证 银行卡
- iOS左侧滑动菜单栏
- IOS代理
- iOS中集成ijkplayer视频直播框架
- iOS开发之duplicate symbols for architecture x86_64错误
- iOS日志获取和实时浏览器显示日志
- iOS JSON Model 转换 MJExtension