设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4092|回复: 21
打印 上一主题 下一主题

[原创发布] RSA加密OAEP方案

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1803
在线时间
133 小时
注册时间
2013-10-6
帖子
193
1
发表于 2018-4-22 21:25:42 | 显示全部楼层
本帖最后由 不死鸟之翼 于 2018-4-22 21:35 编辑

冒个泡 顺便C#大法好 啥都有)

CSHARP 代码复制
  1. namespace RSATest
  2. {
  3.     class Program
  4.     {
  5.         static RSAParameters GenKeyPair()
  6.         {
  7.             var RSA = new RSACryptoServiceProvider();
  8.             return RSA.ExportParameters(true);
  9.         }
  10.  
  11.         static byte[] Encrypt(byte[] m, byte[] n, byte[] e)
  12.         {
  13.             var RSA = new RSACryptoServiceProvider();
  14.             var param = new RSAParameters()
  15.             {
  16.                 Modulus = n,
  17.                 Exponent = e
  18.             };
  19.             RSA.ImportParameters(param);
  20.             return RSA.Encrypt(m, false);
  21.         }
  22.  
  23.         static byte[] Decrypt(byte[] c, RSAParameters param)
  24.         {
  25.             var RSA = new RSACryptoServiceProvider();
  26.             RSA.ImportParameters(param);
  27.             return RSA.Decrypt(c, false);
  28.         }
  29.  
  30.         static void Main(string[] args)
  31.         {
  32.             var param = GenKeyPair();
  33.             var s = "1234567890abcdef";
  34.             var m = Encoding.UTF8.GetBytes(s);
  35.             var c = Encrypt(m, param.Modulus, param.Exponent);
  36.             var m2 = Decrypt(c, param);
  37.             var s2 = Encoding.UTF8.GetString(m2);
  38.             Console.WriteLine(s);
  39.         }
  40.     }
  41. }


一楼所述的textbook RSA(没有填充)用来展示数学原理没问题,但实际使用会有安全性问题,业界实践都是有padding的 比如OAEP(最优非对称加密填充)
所以用C#你会发现每次加密的结果都不一样)



另外没C#的话还可以用Windows Powershell 反正都是.net)雾
POWERSHELL 代码复制
  1. $rsa=New-Object -TypeName "System.Security.Cryptography.RSACryptoServiceProvider"
  2. $arr=[System.Text.Encoding]::UTF8.GetBytes("1234567890abcdef")
  3. echo $rsa.Encrypt($arr,$false)

点评

同C# (构造RSACryptoServiceProvider的时候自动生成key pair 可以用ExportParameters(true)取出公私钥)  发表于 2018-4-23 19:00
话说这个powershell里用到的public key放在了哪里?  发表于 2018-4-23 10:06

评分

参与人数 2星屑 +50 +2 收起 理由
唯道集虚 + 50 + 1 塞糖
guoxiaomi + 1 我很赞同

查看全部评分

←你看到一只经常潜水的萌新。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-5 09:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表