RSA加密

场景

人物:卧底余罪、警长老许、毒枭老傅
事件:老许安排余罪潜伏到老傅的身边

RSA是什么?

RSA是一种非对称加密算法,是目前最好的加密方法。非对称加密又叫公钥加密,也就是说成对的密钥,其中一个是对外公开的,所有人都可以获得,称为公钥,而与之相对应的称为私钥,只有这对密钥的生成者才能拥有。这是警局成立初期一直在延用的一个加密算法。

RSA能干啥

余罪发现老傅近期有一次毒品贩卖活动,需要将信息汇报给老许,让其安排抓捕行动。为了防止信息被窃听,需要使用RSA对信息进行加密。

RSA加密规则

在卧底行动以前,警局需要制作本次行动的RSA秘钥,一个公钥,一个私钥。根据RSA的规范,分以下几步进行生成

  1. 随机选择两个不相等的质数p和q。 老许选了 17 和 11,既p=17, q=11;
  2. 计算两个数的乘积n。既n = 17x11 = 187;
  3. 计算n的欧拉函数φ(n)。φ(n) = (p-1)x(q-1) = (17-1)x(11-1) = 160;
  4. 选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。老许就在1到160之间选择了37;
  5. 到此公钥已经生成,既(n, e) = (187, 37)。下面生成私钥;
  6. 计算e对于φ(n)的模反元素d(模反元素存在,当且仅当e与φ(n)互质)。根据模反元素的计算公式,既解下面的二元一次方程,ed+φ(n) n=1,既。
    37d+160n = 1;
我是通过下面的python脚步计算出的,方法比较局限。如果有更好的解二元一次方程的方法欢迎留言。
大概思路:
第一步:37d+160n = 1,既37d-1=-160n。
第二步:假设d为正整数,d落在[0, 100]区间内。
第三步:将区间内的每一个整数依次赋予d,判断37乘d 加1 或 减1 余160 是否为0。如果余0,根据当前d就可以求出一组[d, n]的整数解。
第四步:如果[0, 100]区间内没有找到结果,可以扩大区间,重复第三步。
def jisuan(a, b):
    d=0
    while(d<100):
       d+=1
        if((a*i-1)%b==0 or (a*i+1)%b==0):
            print d
  1. 二元一次方程可能会有很多个整数解,这里选择了求出的第一组整数解(d, n) = (13, -3)
  2. 至此公钥和私钥都已生成。公钥(n, e)= (187, 37)。私钥(n, d) = (187,13)
  3. 私钥会留在老许的手里,其他人谁又不知道。公钥会给到余罪用于发送情报

RSA怎么用

余罪要向老许发送情报k,首先要用公钥对k进行加密。这里需要注意,k必须是整数(字符串可以取ascii值、unicode值),且k必须小于n。

所谓"加密",也就是根据以下公式计算出密文
密文= k 的 e次方 模 n

根据计算公式,这是python的实现

miwen=pow(k, e, n)

最后将密文发送给老许,老许收到后使用私钥进行解密,操作和加密类似
明文= miwen 的 e次方 模 n

根据计算公式,这是python的实现

k=pow(miwen, d, n)

可以看出如果没有私钥d ,即使得到了miwen,也是无法解析的。

公钥(n,e) 只能加密小于n的整数m,那么如果要加密大于n的整数,该怎么办?有两种解决方法:一种是把长信息分割成若干段短消息,每段分别加密;另一种是先选择一种"对称性加密算法"(比如DES),用这种算法的密钥加密信息,再用RSA公钥加密DES密钥, 这里推荐第二种,网易云音乐也是使用的第二种方案。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 这是去年12月在CSDN写的一篇加密算法文章 现在决定在简书写博客 移植过来方便复习再理解。 最近算法课老师要求小...
    icecrea阅读 1,266评论 1 1
  • 生成密钥随机选择两个不相等的质数p和q。例:61和53。(实际应用中,这两个质数越大,就越难破解。)计算p和q的乘...
    未知代码阅读 535评论 0 1
  • 原文 在此本来RSA跟区块链并无联系, 但是非对称加密以及私钥/公钥的理解相似, 因此理解RSA对与理解ECC有相...
    mrzzcn阅读 553评论 0 2
  • RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。RSA以它的三个发明者Ron Rivest...
    暗物质阅读 1,679评论 0 0
  • 秋风清,秋月明,落叶聚还散,寒鸦栖复惊。相亲相见知何日,此时此夜难为情;入我相思门,知我相思苦,长相思兮长相忆,短...
    穆筱北阅读 121评论 0 1