RSA原理及应用学习小记

RSA原理及应用


  • 密码学发展,经理了很长了编码加密,到后来的对称加密, 及上世纪70年代后的非对称加密RSA

  • RSA数学原理

    • 欧拉定理
    • 模反元素
    • 迪菲赫尔曼密钥交换,拆分欧拉定理
    Φ(n)                        k
  m      mod  n = 1            1    =  1,   1 * m = m,  m< n
    k * Φ(n)+1
  m            mod  n = m

  e * d  mod  X = 1    #e 与 x 互质,那么存在正整数d
  e * d = k * x + 1    # x 替换成 Φ(n),  e为加密用私钥部分, d为解密的公钥部分

    e*d                  
  m      mod n = m       =>  

           e                          d
  加密:  m      mode n  = C    解密  C     mode n = m


  # 公钥: n和e组成 (公开),  私钥: n和d租成,  明文 m, 密文 c, n一般取 1024个二进制位
  # Φ(n) n一般取 质数p1,p2  n=p1*p2, Φ(n)=(p1-1)*(p2-1)   由Φ(n)计算出 e, d
  • 终端用openssl 生成证书
    * openssl genrsa -out private.pem 1024  #生成 1024位的私钥
    * openssl rsa -in private.pem -pubout -out public.pem  #从私钥中提取公钥
    * #可以解析成明文查看,n = publicExponent: 65537, 还有 p1,p2等
    * openssl rsa -in private.pem -text -out private.txt 
    * #使用公钥 加密
    * openssl rsautl -encrypt -in msg.txt -inkey public.pem -pubin -out enc.txt 
    * #使用私钥 解密
    * openssl rsautl -decrypt -in enc.txt -inkey private.pem -out dec.txt
    *
    * #用私钥签名加密
    * openssl rsautl -sign -in msg.txt -inkey private.pem -out enc.txt
    * #使用公钥验证签名
    * openssl rsautl -verify -in enc.txt -inkey public.pem -pubin -out dec2.txt
  
  • 证书转换成iOS程序可用的格式
  $ #用私钥 生成请求证书 的文件,需填写 相关信息,密码留空,  ssl的这个证书从正规机构购买,年费大几千
  $ openssl req -new -key private.pem -out rsacert.scr 

  $ #根据证书 导出代码可用的 der格式
  $ openssl x509 -outform der -in rsacert.crt -out rsacert.der

  $ #根据私钥,scr证书,提取p12私钥, 需要设置密码
  $ pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt

  • RSA的一些特点

    • 加密效率较低,计算较慢
    • 合适一些小数据的加密,不适合大数据加密
    • 已知e,n, e*d = Φ(n) *k +1, 要求d, 需对 大n因式分解 才能算出 Φ(n) , 进而算出 d
  • RSA的一些主要运用

    • 加密 对称加密的 密钥key
    • 用于签名, 如ssl,ipa,apk 签名等

  • mark ab7c42fa964fa6eaceece1a86f2c8f70

你可能感兴趣的:(RSA原理及应用学习小记)