看了一些网上关于RSA加密解密的说法,觉得都不好理解,有的甚至不理解RSA真正的特点。本文地址:http://www.04007.cn/article/258.html,未经许可,不得转载.
一般的接口请求里我们都会进行加密,但基本用的都是对称加密解密,即所用的密钥都是同一个字符串,比如参数请求里,我们将所有的参数值连接起来,再加入一段密文进行md5哈希运算摘要出一段字符长度,然后解密方也必须使用同样的一段密文加在参数值后面进行运算,来匹配数据是否经过修改。本文地址:http://www.04007.cn/article/258.html,未经许可,不得转载.
这里就有一个问题,那就是如果这个密文被第三方捕获,则第三方就可以制造出另一段密文,让另一方接受不是真正来自对方的数据。而RSA加密认证能有效地避免这种问题,原因就在于RSA加密认证的密钥是一对,用一个加密,用另一个才能解密,反之也可以。这样即便第三方知道了公钥(一般是秘钥加密,公钥解密),也没法造出另一段密文,从而实现所有另一方接受到的密文都是来自于对方的(即便不是来自对方的,也是和对方发来的一模一样的)。借个图示:本文地址:http://www.04007.cn/article/258.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/258.html,未经许可,不得转载.
一般我们说起RSA时总是提RSA加密,实际上RSA更偏向于认证。即这个公钥不怕别人知道,即使知道你也只能查看密文,无法制造要用公钥解密的密文。因为私钥只有一方知道,而公钥可能让多方知道。就像手机与服务器端的接口请求,公钥写在APP里即便被APP被破解,拿到了公钥,也无法让其它安装APP的用户接受其制造的信息,因为公钥无法生成公钥解密的密文,必须私钥加密,而私钥只有服务器端知道。本文地址:http://www.04007.cn/article/258.html,未经许可,不得转载.
另外,网上还有人认为需要用公钥加密,私钥用于解密,这种当然是走得通,但是私钥是一个比公钥更重要更需要保护的东西,因为私钥可以生成公钥,公钥不能生成对应的私钥。本文地址:http://www.04007.cn/article/258.html,未经许可,不得转载.
在linux/centos下可以很方便地使用openssl生成公钥和私钥。前提是安装了openssl,如果没有yum install openssl即可。命令如下:本文地址:http://www.04007.cn/article/258.html,未经许可,不得转载.
[root@kermit ~]# openssl OpenSSL> version OpenSSL 1.0.1e-fips 11 Feb 2013 OpenSSL> genrsa -out rsa_private_key.pem #生成私钥 Generating RSA private key, 1024 bit long modulus .....++++++ .........++++++ e is 65537 (0x10001) OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem #生成公钥 writing RSA key OpenSSL> ^C [root@kermit ~]# cat rsa_private_key.pem -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC4dOcaj9mkOxzEqEIieN3WOWKGQe9l4Kk6SMWUUw5Ds+AmpqEx +r7unLqmyUhz1BIek29uP4scesAcxsL/GZUvwjVGjhQhKReJ9W5k4rXlAad3h1eI cCGNavMY89vLzAxEoKYtar99qrBzBQpBZXJmrgqhtPVaAbix/fObSxPHGwIDAQAB AoGAFFioyVBGxIvUr4iTyvOkHKY1zPNm8cjnQcuXJ7ZFo4gq2HiW3Ul4WB+noxAe 0s/4s7C1oOaXdKvBlysBhVwQDYWfsXcSykxQlS6CgPnYYwWH97CADPNjsfKpqFKm NJQ7qw0XGSfm7/ERTUgT/hhImFg8aifTx7QWt9ZVYzeuD7ECQQDchBf60vdLnTy7 Pvs6LB4yGST7ycVEoj5dzF9QF2PfzL+fQ/HjQ7+AeN3Khou9hINdsG+kqNjgCQ39 IhRASxQzAkEA1iNirQavA5YVTpgcjVQGRgxHRGsc0eE2rLNQoSnSCjLd+KGl+v88 ja7ykEZeSFNJzgqSzZ5cPGhtiUq59qjZeQJAdZu50lt76wcUYeVIRhFLlXqVn/hP zrgdPReH6gZfjPf9ZyrsskHqu9E6sQ4rL0uiaHB2SsKG0I3juRLY7CVewwJBAIwq qWJ8p35/dP73DmlsAJdFXjjoq/qtom41CagUicnnNeiTVuQOwgIz686IYRqSehMG VMWGzPU1nc1qPoO4TnECQQDEsRUHndqtl02rhjH94v8BsllL4z3DRxMhwg6AyBUb TfEdV3ErR6iP8lW53z/DmkcQaNWExLQYPZsvDKMnxrYQ -----END RSA PRIVATE KEY----- [root@kermit ~]# cat rsa_public_key.pem -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4dOcaj9mkOxzEqEIieN3WOWKG Qe9l4Kk6SMWUUw5Ds+AmpqEx+r7unLqmyUhz1BIek29uP4scesAcxsL/GZUvwjVG jhQhKReJ9W5k4rXlAad3h1eIcCGNavMY89vLzAxEoKYtar99qrBzBQpBZXJmrgqh tPVaAbix/fObSxPHGwIDAQAB -----END PUBLIC KEY----- [root@kermit ~]#
本文地址:http://www.04007.cn/article/258.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |