Fork me on GitHub

密码学进阶

密码学进阶

密码学思维导图

下面我们针对思维导图一一进行讲解。

OpenSSL生成密钥演练

  • 生成强度是512的RSA私钥
1
$ openssl genrsa -out private.pem 512
  • 以明文的形式输出私钥内容
1
$ openssl rsa -in private.pem -text -out private.txt
  • 从私钥中提取公钥
1
$ openssl  rsa -in private.pem -out public.pem -outform PEM -pubout
  • 以明文的形式输出公钥内容
1
$ openssl rsa -in public.pem -out public.txt -pubin -pubout -text
  • 使用公钥加密一个小文件
1
$ openssl rsautl -encrypt -pubin -inkey public.pem -in msg.txt -out msg.bin
  • 使用私钥解密一个小文件
1
$ openssl rsautl -decrypt -inkey private.pem -in msg.bin -out a.txt
  • 将私钥转成DER格式
1
$ openssl rsa -in private.pem -out private.der -outform der
  • 将公钥转成DER格式
1
$ openssl rsa -in public.pem -out public.der -outform der

程序开发证书生成

  • 生成私钥ca.key
1
$ openssl genrsa -out ca.key 1024
  • 创建请求证书csr文件
1
$ openssl req -new -key ca.key -out rsacert.csr
  • 生成证书并签名,有效期10年
1
$ openssl x509 -req -days 3650 -in rsacert.csr -signkey ca.key -out rsacert.crt
  • 格式转换 crt -> der,生成公钥rsacert.der
1
$ openssl x509 -req -days 3650 -in rsacert.csr -signkey ca.key -out rsacert.crt
  • 导出p12文件
1
$ openssl pkcs12 -export -out p.p12 -inkey ca.key -in rsacert.crt

到此为止,我们的文件目录下会创建5个文件,分别为 ca.keyrsacert.csrrsacert.crtrsacert.derp.p12,但是对于我们程序真正有用的只有p.p12rsacert.der

总结

   至于对称加密和非对称加密算法相关的文章很多,这里不在赘述