RSA算法公式

RSA密钥对生成原理

RSA加解密原理

密钥格式

ASN.1 - 抽象语法标记

ASN.1抽象语法标记(Abstract Syntax Notation One) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。

DER编码格式

ASN.1有一套关联的编码规则,这些编码规则用来规定如何用二进制来表示数据结构,DER是其中一种。
DER 是密钥的二进制表述格式。

PEM编码格式

PEM是一个用来存储和发送密码学key、证书和其他数据的文件格式的事实标准。许多使用ASN.1的密码学标准(比如X.509和PKCS)都使用DER编码,而DER编码的内容是二进制的,不适合与邮件传输(早期Email不能发送附件),因此使用PEM把二进制内容转换成ASCII码。文件内容的格式像下面这样:

-----BEGIN label-----
BASE64Encoded
-----END label-----

PEM实际上就是把DER编码的文件的二进制内容用base64编码一下,然后加上-----BEGIN label-----这样的头和-----END label-----这样的尾,中间则是DER文件的Base64编码。

使用命令"openssl genrsa -out key.pem"产生如下内容的key.pem文件,其中"-----BEGIN RSA PRIVATE KEY-----"与"-----END RSA PRIVATE KEY----"之间的数据为der文件的Base64编码得到的数据。

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtmDFzYYgH9Dq2rsHNVIUpleIdiKRpyc1qADKxJ90ztad8U94
JSXTOynf4q5LWN8Rl2PX+masJvA4g7Vhlh0fDf/BrgP/KueNO7RD4/L2ITufF/Oj
DCCX/ZQzLykII7Tk3DobXvr3/RvxCOFQ39LfyGkjhKTCwjR9dnTIo9gvR3Zp2ZjE
zJCpBOImTPqo/se0dfEoFlNdLmitEtpOrUl9mSof4eaKRbbTgXFn4acBfCAKS4gb
FzUP85g+ORKSO8grgvSKPMzuKloPmUUy2waJypEg8edxRWcA7K570dTjwP1UkQbu
Fk9d7YDMnXx8IjbSwbd7SpQ+rIbP6ppN8dGkEwIDAQABAoIBAAcLzhiWqf8Qr0Is
H6cruKiEkT0fMMlodmY7QZo/HuAu4oNEMrwcrgCHKaM0YKzaUW+r59hAxz3p4gUU
qOSH039S9kSm2uDpeUdpO4Y/CMtX5lmijBYX3Edrxl54E1xtzLnFdPFCePpKbhGN
wvYiy4qOpVSmmO+v33kIIghSfeEg3VuknhFyMGQADITmfLqeqodVh23E0Eq4ZvpB
/rP8CjpheLIW77IUqgwpaocTJx21JMVIxGK9Y2vRmEs2KSlw8uGKi4gWDAn70f9+
nq2z2CISxFAWlBuOR5g9iVZnd7sBxDZewMejYyuE1yFoiOrtzR793y43rlBZJO8Q
gqGeaKECgYEA2fq8TWQIjWNe9jlKE/lbve2/BvtQrAKmdOVFKbs+LPEQ+DVNeNYV
z4h7CEUdN0diSN69pp0GqV/wbIKs8SSPKMLTe1dwjzmrs/rx1OcQY8UboWC8R0lo
nPz0KIsmHr1aEKOBvts3Iu5vz7bAbg3TtDd0sRDsTNDlmZiqlQNSmQ0CgYEA1jBa
4METCzuNpnob/na4r/XJ6cU/jTlwWrCEdz9qiQf6G5X8x7ppMS81mJXlxuI2bXa+
9ljW06YoApDxHhkICv3cmifuWuSQBynKDDoTfF/BsW1Jedgpv+Pim6yEFtypaR72
6dUpvbxV4F1DtMGcI1AgMb+ioi7+6KZQnM+nqZ8CgYEArl/5gQOUH98tmVVNIFtr
e62UEna7G09nb731LSQf4f3asGSbnB3PBt1MZto7O/x78IVXO9EEAjzAbV3AEYxI
hbgNS+8wGTNuWyVVjhZmMxn8N4XWOETOTj/A5ioijZa2VPcoFNDy85vAkG7G04N2
JwXx8K/0CKNX+R5634fv7IUCgYB2g+UVLeBCu94iOrjYsYp52q+xyXHjy9+OXtO9
Q/rH/gD3WKO5RD1GeM/YMUEmLi9dnHIHz5p3HB5RZS/1rnYT1upE5kluQ8AqJoZl
A5GapUWAzm70m5ZmVksiRnAEUm7u+rI3KrrhAKAn+JMpJmQl6gUWYeo0gXqM8tHy
IrisEwKBgQDDXoqCKLQMABpdDUU4C/hiWgvZOmxfN51SGxwqWFv898iiITPCWqk2
58Op+VpPjLXoNKhGkV4D4NNQyVhSf/C4ISsYucB/m46EtB49KIqmi9JnPZuY3LvB
Wbtbx4e6D+oSAENTP0vEZesXwuRlzKuvx6cZkEWp5Sn9CmObViHXEA==
-----END RSA PRIVATE KEY-----

使用"openssl rsa -in key.pem -outform der -out key.der"将pem文件转换成der文件(二进制表示形式),得到的内容如下:

0<82>^D¤^B^A^@^B<82>^A^A^@¶`ÅÍ<86> ^_ÐêÚ»^G5R^T¦W<88>v"<91>§'5¨^@ÊÄ<9f>tÎÖ<9d>ñOx%%Ó;)ßâ®KXß^Q<97>c×úf¬&ð8<83>µa<96>^]^_^MÿÁ®^Cÿ*ç<8d>;´Cãòö!;<9f
>^Wó£^L <97>ý<94>3/)^H#´äÜ:^[^ú÷ý^[ñ^HáPßÒßÈi#<84>¤ÂÂ4}vtÈ£Ø/GviÙ<98>ÄÌ<90>©^Dâ&Lú¨þÇ´uñ(^VS].h­^RÚN­I}<99>*^_áæ<8a>E¶Ó<81>qgá§^A|
K<88>^[^W5^Oó<98>>9^R<92>;È+<82>ô<8a><Ìî*Z^O<99>E2Û^F<89>Ê<91> ñçqEg^@ì®{ÑÔãÀýT<91>^Fî^VO]í<80>Ì<9d>||"6ÒÁ·{J<94>>¬<86>Ïê<9a>MñѤ^S^B^C^A^@^A^B<8
2>^A^@^G^KÎ^X<96>©ÿ^P¯B,^_§+¸¨<84><91>=^_0Éhvf;A<9a>?^^à.â<83>D2¼^\®^@<87>)£4`¬ÚQo«çØ@Ç=éâ^E^T¨ä<87>Ó^?RöD¦ÚàéyGi;<86>?^HËWæY¢<8c>^V^WÜGkÆ^x^S\mÌ
¹ÅtñBxúJn^Q<8d>Âö"Ë<8a><8e>¥T¦<98>ï¯ßy^H"^HR}á Ý[¤<9e>^Qr0d^@^L<84>æ|º<9e>ª<87>U<87>mÄÐJ¸fúAþ³ü
:ax²^Vï²^Tª^L)j<87>^S'^]µ$ÅHÄb½ckÑ<98>K6))pòá<8a><8b><88>^V^L   ûÑÿ~<9e>­³Ø"^RÄP^V<94>^[<8e>G<98>=<89>Vgw»^AÄ6^ÀÇ£c+<84>×!h<88>êíÍ^^ýß.7®PY$ï^P<8
2>¡<9e>h¡^B<81><81>^@Ùú¼Md^H<8d>c^ö9J^Sù[½í¿^FûP¬^B¦tåE)»>,ñ^Pø5MxÖ^UÏ<88>{^HE^]7GbHÞ½¦<9d>^F©_ðl<82>¬ñ$<8f>(ÂÓ{Wp<8f>9«³úñÔç^PcÅ^[¡`¼GIh<9c>üô(<
8b>&^^½Z^P£<81>¾Û7"îo϶Àn^MÓ´7t±^PìLÐå<99><98>ª<95>^CR<99>^M^B<81><81>^@Ö0ZàÁ^S^K;<8d>¦z^[þv¸¯õÉéÅ?<8d>9pZ°<84>w?j<89>^Gú^[<95>üǺi1/5<98><95>åÆâ
6mv¾öXÖÓ¦(^B<90>ñ^^^Y^H
ýÜ<9a>'îZä<90>^G)Ê^L:^S|_Á±mIyØ)¿ãâ<9b>¬<84>^VÜ©i^^öéÕ)½¼Uà]C´Á<9c>#P 1¿¢¢.þè¦P<9c>ϧ©<9f>^B<81><81>^@®_ù<81>^C<94>^_ß-<99>UM [k{­<94>^Rv»^[Ogo½õ
-$^_áýÚ°d<9b><9c>^]Ï^FÝLfÚ;;ü{ð<85>W;Ñ^D^B<Àm]À^Q<8c>H<85>¸^MKï0^Y3n[%U<8e>^Vf3^Yü7<85>Ö8DÎN?Àæ*"<8d><96>¶T÷(^TÐòó<9b>À<90>nÆÓ<83>v'^Eñð¯ô^H£Wù^^
zß<87>ïì<85>^B<81><80>v<83>å^U-àB»Þ":¸Ø±<8a>yÚ¯±ÉqãËß<8e>^Ó½CúÇþ^@÷X£¹D=FxÏØ1A&./]<9c>r^GÏ<9a>w^\^^Qe/õ®v^SÖêDæInCÀ*&<86>e^C<91><9a>¥E<80>Înô<9b>
<96>fVK"Fp^DRnîú²7*ºá^@ 'ø<93>)&d%ê^E^Vaê4<81>z<8c>òÑò"¸¬^S^B<81><81>^@Ã^<8a><82>(´^L^@^Z]^ME8^KøbZ^KÙ:l_7<9d>R^[^\*X[ü÷È¢!3ÂZ©6çéùZO<8c>µè4¨F<9
1>^^CàÓPÉXR^?ð¸!+^X¹À^?<9b><8e><84>´^^=(<8a>¦<8b>Òg=<9b><98>Ü»ÁY»[Ç<87>º^Oê^R^@CS?KÄeë^WÂäeÌ«¯Ç§^Y<90>E©å)ý
c<9b>V!×^P

RSA非对称加密算法相关推荐

  1. python能解密java的_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  2. java python rsa加密_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  3. Java 实现 RSA 非对称加密算法-加解密和签名验签

    1. 非对称加密算法简介 非对称加密算法又称现代加密算法,是计算机通信安全的基石,保证了加密数据不会被破解.与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密(pr ...

  4. .NET Core加解密实战系列之——RSA非对称加密算法

    简介 加解密现状,编写此项目的背景: 需要考虑系统环境兼容性问题(Linux.Windows) 语言互通问题(如C#.Java) 网上资料版本不一.不全面 .NET官方库密码算法提供不全面,很难针对其 ...

  5. RSA 非对称加密算法简述

    RSA概述 首先看这个加密算法的命名.很有意思,它其实是三个人的名字.早在1977年由麻省理工学院的三位数学家Rivest.Shamir 和 Adleman一起提出了这个加密算法,并且用他们三个人姓氏 ...

  6. 加密授权验证学习之五——RSA非对称加密算法将机器码加密为注册码

    RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中RSA被广泛使用.我们这里使用RSA加密算法,主要用到openssl库,openssl是可以很方便加密解密的库,可以使用它来对需要在网络中 ...

  7. RSA - 非对称加密算法简要介绍与JAVA实现

    [1]RSA简介 RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年 ...

  8. Thinkphp 6 使用RSA非对称加密算法 对接口加密解密

    后台接口中 经常使用到加密算法 如何使用RSA 非对称加密 对数据进行加密传输 下载RSA 加密算法 php-Rsa算法下载 将下载好的RSA 算法 放入 到 TP6项目根目录下 extend 拓展目 ...

  9. RSA 非对称加密算法详细介绍

    背景 RSA 算法大家肯定都听说过了,它是一种常见的非对称加密算法,常用来对一些在网络上传输的敏感信息进行加密. 但具体流程不知道大家清楚不?本文将概述 RSA 算法的流程,并用一个简单示例进行阐述, ...

  10. RSA ~ 非对称加密算法

    RSA: 非对称加密,加密与解密使用的密钥不是同一密钥,对中一个对外公开,称为公钥,另一个只有所有者知道,称为私钥. 用公钥加密的信息只有私钥才能解开,反之,用私钥加密的信息只有公钥才能解开(签名验签 ...

最新文章

  1. 深度有趣 | 30 快速图像风格迁移
  2. java图片预览上传_Java实现图片上传预览 (使用ajax提交)
  3. The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
  4. olive videoeditor开源跨平台视频编辑器
  5. 对应的ctrl_取消单元格合并,对空白单元格填充数据,学会Ctrl+Enter五秒搞定
  6. JAVA不同类型数组重载_方法的重载;数组 (Java Day05)
  7. 微信小程序---实现输入手机验证码功能
  8. python处理LINUX的PWD文档
  9. bzoj 1016: [JSOI2008]最小生成树计数
  10. rpc portmap rpcbind vxi11
  11. live2d碰撞_Unity Live2D 模型(与UI)拖拽功能 实现源码
  12. 制作一个全盘搜索器 ,能搜索整个磁盘所有目录
  13. unlink函数 与 remove函数
  14. 关于高维空间的一些思考
  15. SSO(单点登录)技术漫谈
  16. ViewData与ViewBag的区别是什么
  17. java8新特性(2)-Lambda表达式
  18. Kafka 压缩、限流和 SASL_PLAIN 、 SASL_SCRAM-SHA-256简单认证
  19. EtherCAT使用与解析-关于ethercat应用层使用
  20. 读保哥《ASP.NET MVC2开发实战》第二回(Model)

热门文章

  1. Nvidia Jetson NX配置教程 for 阿福哥
  2. vb.net操作数据库之ACCESS(3)
  3. VS2017生成项目报 找不到资产文件“xxxx\obj\project.assets.json
  4. VS2005下error PRJ0003 : Error spawning 'cmd.exe'的解决方法
  5. git reset soft、mixed和hard的区别和用途详讲
  6. ICCV2021-Soft Teacher-End-to-End Semi-Supervised Object Detection with Soft Teacher
  7. [转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件...
  8. Linux 开发环境工具
  9. 代理IP的主要用途和使用注意事项
  10. 学会Squid之传统代理和透明代理一篇就够了!