非对称加密

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)
公开秘钥是公开的,私有秘钥是保密的

  • 公开秘钥的好处:
    简单 : 仅仅只是一些乘除的运算而已
    可靠 : 1.不论给出多少份明文和对应的密文,也无法根据已知的明文和密文的对应关系,破译出下一份密文
    2.N和E可以公开给任何人加密使用,但是只有掌握密钥D的人才可以解密,即使加密者自己也无法解密
    灵活 : 可以产生很多的公钥E和私钥D的组合给不同的加密者
  • 公开密钥与私有密钥是一对
    如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;
    如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密
  • 非对称加密的特点
    特点 : 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快
    对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥,所以保证其安全性就是保证密钥的安全.
    而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了
    非对称加密的加密和解密
  • RSA算法的实际应用
    由于RSA算法的加密解密速度要比对称算法的速度慢很多,在实际应用中,通常采取:
    (1) 数据本身的加密解密使用对称加密算法(AES/DES3)
    (2) 用RSA算法加密并传输对称算法所需的秘钥
    除此之外,RSA算法还在身份认证(或称鉴权)以及数字签名方面得到广泛的使用
  • RSA算法原理
    • 原理
找出两个“很大”的质数:P 和 Q
(1)求N = P * Q
(2)求M M是p-1和q-1的最小公倍数  M= (P – 1) * (Q – 1) 或者写成"M =lcm(p-1,q-1)"
(3)找出整数E,E与M互质,即除了1之外,没有其他公约数
(4)找出整数D,使得E*D除以M余1,即 (E * D) % M = 1
"通过以上的准备工作,可以得到 :"
(1)E是公钥,负责加密
(2)D是私钥,负责解密
(3)N负责公钥和私钥之间的联系
(4)加密算法,假定对X进行加密 : (X ^ E) % N = Y (公式解读:X的E次方对N取模等于Y)
(5)根据费尔马小定义,根据以下公式可以完成解密操作 : (Y ^ D) % N = X (公式解读: Y的D次方,对N取模等于X)
  • RSA加密小实践
(1)p = 17,q = 19 =>N = 323
(2)lcm(p-1,q-1)=>lcm(16,18)=>L= 144
(3)gcd(E,L)=1 =>E=5
(4)E乘以几可以mode L =1? D=29可以满足
(5)得到公钥为:E=5,N=323
(6)得到私钥为:D=29,N=323
(7)加密 明文的E次方 mod N = 123的5次方 mod 323 = 225(密文)
(8)解密 密文的D次方 mod N = 225的29次方 mod 323 = 123(明文)
  • openssl生成密钥命令
(1)生成强度是 512 的 RSA 私钥:$ openssl genrsa -out private.pem 512
(2)以明文输出私钥内容:$ openssl rsa -in private.pem -text -out private.txt
(3)校验私钥文件:$ openssl rsa -in private.pem -check
(4)从私钥中提取公钥:$ openssl rsa -in private.pem -out public.pem -outform PEM -pubout
(5)以明文输出公钥内容:$ openssl rsa -in public.pem -out public.txt -pubin -pubout -text
(6)使用公钥加密小文件:$ openssl rsautl -encrypt -pubin -inkey public.pem -in msg.txt -out msg.bin
(7)使用私钥解密小文件:$ openssl rsautl -decrypt -inkey private.pem -in msg.bin -out a.txt
(8)将私钥转换成 DER 格式:$ openssl rsa -in private.pem -out private.der -outform der
(9)将公钥转换成 DER 格式:$ openssl rsa -in public.pem -out public.der -pubin -outform der
终端生成私钥

终端提取公钥&加密解密
  • 示例代码
    生成的私钥和公钥文件

    上图中p.p12是私钥文件 rsacert.der是公钥文件,在通过非对称方式对数据进行加密前,要导入这两个文件,因为加密的时候要用到,这两个文件的生成,在数字证书中,有讲述
//程序运行后,加载公钥和私钥
-(void)viewDidLoad {
    [super viewDidLoad];
    //加载公钥(用于加密)
    [[RSACryptor sharedRSACryptor] loadPublicKey:[[NSBundle mainBundle] pathForResource:@"rsacert.der" ofType:nil]];

    //加载私钥(用于解密)
    [[RSACryptor sharedRSACryptor] loadPrivateKey:[[NSBundle mainBundle] pathForResource:@"p.p12" ofType:nil] password:@"123456"];
}
//点击控制器的界面的时候,实现对数据的加密和解密
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //加密
    NSString * str = @"handsome";
    NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
    NSData * encodeData = [[RSACryptor sharedRSACryptor] encryptData:data];

    //通过Base64编码,查看加密后的内容
    NSString * str1 = [encodeData base64EncodedStringWithOptions:0];
    NSLog(@"%@",str1);

    //解密
    NSData * decodeData = [[RSACryptor sharedRSACryptor] decryptData:encodeData];
    NSString * str2 = [[NSString alloc] initWithData:decodeData encoding:NSUTF8StringEncoding];
    NSLog(@"%@",str2);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359

推荐阅读更多精彩内容