忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 2687 | 回复: 7

[算法] 关于RSA秘钥 [复制链接]

论坛徽章:
0
发表于 2018-01-18 00:51 |显示全部楼层
本帖最后由 Unix_C_Linux 于 2018-01-18 01:11 编辑

各位大神,最近在看RSA的原理,有个问题不是太懂,如果按照标准对的RSA算法算出来的肯定是一串数字,但平时用到的秘钥都是-----BEGIN RSA PRIVATE KEY-----
                xxxx
-----END RSA PRIVATE KEY-----

问题1.都是这种不加密的base64编码是否可以通过算法提取出模数?问题2.生成公钥/私钥时,模数是怎么选取的,如果手动选择p,q可以很容器确定(p-1)(q-1),但是有些秘钥生成程序是不需要输入的,会默认返回1024位的模数,是怎么选取的?


  求大神解答,非常感谢




论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
发表于 2018-01-18 09:46 |显示全部楼层
回复 1# Unix_C_Linux

  1. openssl rsa -in keyfile -text -noout  -passin pass:yourpassword
复制代码
这个命令可以让你知道当前的private key中的内容。
至于你所说的p,q的选取,则因为是要加密强度,你可以在你的 genrsa中指定的。默认是你说的长度的。
不知道你还有什么不明白的。

论坛徽章:
0
发表于 2018-01-18 10:22 |显示全部楼层
回复 2# jeppeter

非常感谢  其实我想问的是 根据rsa算法算出来的是一串数字 这传数字是通过什么方式转换为一串字符串的 看资料是base64编码 具体怎么转的 我想知道这个

论坛徽章:
0
发表于 2018-01-21 19:37 |显示全部楼层
本帖最后由 foolishx 于 2018-01-21 19:38 编辑

这就涉及到base64的编码问题了。
首先base64就是一种把二进制数表示成可见ASCII字符的过程,这些可见ASCII的字符选择为:
a-z, A-Z, 0-9, +,= 共计64个字符。所以一般的base64编码或者解码都有一个二维数组表示的字典,用于对应这些字符。
接下来的问题是如何把二进制数用这64个可见字符表示出来呢?这就需要要解一个事实:每个字符占用8比特位,那么3个字符就占用24比特位。如果把24比特位分成4份的话,应该每份是6比特位,而6比特位共可以表示64个数,即0-63,即正好可以用来映射那64个可见的ASCII字符,这也就是base64的基本设计思想。

比如 0x123456 的二进制表示为:0001 0010 0011 0100 0101 0110,分成四份之后分别对应为: 000100, 100011, 010001, 010110, 它分别对应的四个编码为4, 35, 17, 22,然后到对应的base64的字典里面去找这4个字符就可以了。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 2018-01-22 10:09 |显示全部楼层
回复 1# Unix_C_Linux

中间的base64解码之后得到二进制数据然后你再去baidu一下什么叫DER编码

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2018-01-26 20:34 |显示全部楼层
本帖最后由 yulihua49 于 2018-01-26 20:41 编辑
Unix_C_Linux 发表于 2018-01-18 00:51
各位大神,最近在看RSA的原理,有个问题不是太懂,如果按照标准对的RSA算法算出来的肯定是一串数字,但平时用到 ...

模数是随机选取一个素数(p),根据码长,最高位为1,除以这个素数,在这个之下再寻找一个素数(q).
如,码长64位:
0X1000000000000000
随机32位素数:
0Xpppppppp
0X1000000000000000/0Xpppppppp=0Xxxxxxxxx
在0Xxxxxxxx之下再寻找一个素数0Xqqqqqqqq。

论坛徽章:
0
发表于 2018-01-29 14:43 |显示全部楼层
回复 5# cjaizss

我要的就是这个  谢版主指点

论坛徽章:
0
发表于 2018-01-29 14:44 |显示全部楼层
foolishx 发表于 2018-01-21 19:37
这就涉及到base64的编码问题了。
首先base64就是一种把二进制数表示成可见ASCII字符的过程,这些可见ASCII ...

谢谢您的解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP