RSA原理记录

1.找出两个“很大”的质数:P & Q
N = P * Q
M = (P – 1) * (Q – 1)

2.找出整数E,E与M互质,即除了1之外,没有其他公约数

3.找出整数D,使得 ED 除以 M 余 1,即 (E D) % M = 1,等价于E*D-1=K*M

4.经过上述准备工作之后,可以得到:

E是公钥,负责加密
D是私钥,负责解密
N负责公钥和私钥之间的联系

5.加密算法,假定对X进行加密

(X ^ E) % N = Y

6.解密算法,根据费尔马小定义,可以使用以下公式完成解密

(Y ^ D) % N = X

原文链接:https://blog.csdn.net/sszgg2006/article/details/41945163

原文地址:https://www.cnblogs.com/zs0618/p/12312623.html

时间: 2024-10-08 04:50:45

RSA原理记录的相关文章

RSA算法记录----摘抄

RSA算法原理(一) "公钥加密算法". 因为它是计算机通信安全的基石,保证了加密数据不会被破解.你可以想象一下,信用卡交易被破解的后果. 进入正题之前,我先简单介绍一下,什么是"公钥加密算法". 一.一点历史 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加密: (2)乙方使用同一种规则,对信息进行解密. 由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"(Symm

SSH原理记录

一.什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录. 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露. 最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑.1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置. 需要指出的是,SSH只是一种协议,存在多种实现,既有

公钥系统之RSA原理验证

在公钥系统中,我们采用公钥加密,私钥解密的方式,使得报文能够比较安全的传输. 假设A和B通信,但他们之间不通过对称密钥,B有一个公钥K+B和一个私钥K?B.为了与B实现通信,A首先需要获得B的公钥K+B对报文m进行加密,即K+B(m):B收到A的加密报文后用私钥K?B进行解密,即K?B(K+B(m))=m.其中的加解密算法通常使用RSA(RSA取创始人Ron Rivest, Adi Shamir, Leonard Adleman的姓氏首字母). RSA工作方式 加密时,首先把报文m做e次的幂运算

公钥密码RSA算法记录

介绍: RSA算法是1978年由 R.Rivest.A.Shamir.L.Adleman提出的一种用数论构造的.也是迄今为止理论上最为成熟.完善的公钥密码体,该体制已得到广泛的应用. 算法描述: 1. 密钥的产生 (1) 选两个保密的两个大素数 p 和 q . (2) 计算 n=p*q,φ(n) = (p-1)*(q-1),其中,φ(n)是n的欧拉函数值 (即满足和n互素的在[1,n)区间的数的个数,定理[ φ(m*n) = φ(m)*φ(n),仅当m,n互素时]): (3) 选一个整数 e ,

ORACLE 一致性读原理记录

什么是一致性读? 一致性读指的是在从查询那一刻起,中间的变化不予理会. 举例说明 比如我有两个帐户A,B. A 有1000块,B有1000快.我查询的时候查询速度比较慢.中间A转500到B账户. 已经查询到A账户有1000,B账户有1500,这个时候我查询的结果是查询的结果应该是2500还是2000呢? 正确结果当然是2000. 这里就设计到oracle一致性查询的问题了.   oracle有两个概念: 1.SCN,SYSTEM CHANGE NUMBER ,这是一个只会增加的递增数字,存在在O

逆波兰表达式算法原理记录

原始逆波兰式算法(未考虑负数.函数调用情况) 1.从左至右扫描一中缀表达式.2.若读取的是操作数,则判断该操作数的类型,并将该操作数存入操作数堆栈3.若读取的是运算符      (1) 该运算符为左括号"(",则直接存入运算符堆栈.      (2) 该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇到左括号为止,此时抛弃该左括号.      (3) 该运算符为非括号运算符:      (a) 若运算符堆栈栈顶的运算符为左括号,则直接存入运算符堆

RSA原理模拟

static int P = 11; static int Q = 13; static int N; static int M; static int E; static int D; - (instancetype)init { self = [super init]; if (self) { N = P * Q; M = (P - 1) * (Q - 1); NSLog(@"N:%zd - M:%zd", N, M); E = 89; for (int i = 1; i <

RSA原理说明

长度,建议至少1024.模数n(常取默认65537)两边都要用. 指数e,和n一起就是公钥. 指数d,和n一起就是私钥. 质数p和q用于生成密钥对,然后就丢弃不公开. 用公钥(n, e)加密:明文e ≡ 密文 (mod n) 用私钥(n, d)解密:密文d ≡ 明文 (mod n) 上述表达式是同余式,也就是"≡"两边mod n是相等的.mod运算就是取被除数 / 除数得到的余数,运算符是%.比如5%3=2.所以上式也可表达成 用公钥(n, e)加密:密文 = 明文e % n 用私钥(

mfc简单框架的分析和原理记录

由于最近在准备考试,可能博客的更新有点慢(呵,我又为自己的懒惰和拖延找借口,总之有时间就更新) 一.菜单 1.在windows中,菜单资源的识别通过HMENU句柄识别 ,但是这个开发过程比较繁琐 2.菜单的开发 我们vc6.0开发可以借助可视化的工具,菜单对应的处理消息我们可以通过添加相应的时间来操作(菜单消息分类:菜单命令消息和菜单更新消息). 3.菜单快捷键 vc6.0菜单编辑器可以实现 4.弹出式菜单创建和应用 (1)创建带有空标题的菜单 (2)在上下文环境对应环境添加代码 (3)对应类中