加密、解密、签名
加密、解密、签名
麦拂沙 发表于2年前
加密、解密、签名
  • 发表于 2年前
  • 阅读 203
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

常见加密算法:

  • 非对称加密算法: RSA、ECC、DH
  • 对称加密算法:AES、DES、RC4
  • hash算法:MD5、SHA1、SHA256

加密与签名

  • 私钥签名, 公钥验签
  • 公钥加密, 私钥解密
openssl genrsa -out key.pem 1024  #生成pem格式私钥

openssl rsa -in key.pem -pubout -out pubkey.pem  #提取pem格式公钥(-----BEGIN PUBLIC KEY----------BEGIN PUBLIC KEY-----)
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem  #提取pem RSAPublicKey格式公钥(-----BEGIN RSA PUBLIC KEY-----)

openssl rsautl -encrypt -in input.file -inkey pubkey.pem -pubin -out output.file  #公钥加密文件
openssl rsautl -decrypt -in input.file -inkey key.pem -out output.file      #私钥解密文件

MD5withRSA签名 :

  • 生成签名
    1. 对数据MD5取摘要
    2. 对摘要进行RSA私钥加密获得签名
  • 签名校验
    1. RSA公钥解密接收到的签名获得原始MD5摘要
    2. 对接收到的数据直接MD5取摘要
    3. 校验两个摘要值
/***************************** MD5withRSA非对称加密下的签名/校验 PHP示例 *****************************/
    /**
     * 生成签名
     * @param $pri_key_path 私钥地址 或 内容
     * @param $signature_alg 签名算法常量, 如OPENSSL_ALGO_SHA1、OPENSSL_ALGO_MD5
     * @param $content 需要签名的内容
     */
    public function rsaSign($pri_key_path, $signature_alg, $content) {
        $res = openssl_pkey_get_private($pri_key_path);
        openssl_sign($content, $sign, $res, $signature_alg);
        openssl_free_key($res);
        $sign = base64_encode($sign);  # 对签名base64加密,避免其中的非ASCII字符在传输中丢失
        return $sign;
    }

    /**
     * 验证签名
     * @param $pub_key_path 公钥地址 或 内容
     * @param $signature_alg 签名算法常量, 如OPENSSL_ALGO_SHA1、OPENSSL_ALGO_MD5
     * @param $content 签名的内容
     * @param $sign 签名
     */
    public function rsaVerifySign($pub_key_path, $signature_alg, $content, $sign) {
        $sign = base64_decode($sign);
        $res = openssl_pkey_get_public($pub_key_path);
        $ret = openssl_verify($content, $sign, $res, $signature_alg);
        openssl_free_key($res);

        return $ret == 1;
    }

SSH-KEY生成

# 生成RSA加密类型的秘钥,导出两个文件:
# 公钥 ~/.ssh/id_rsa.pub
# 私钥 ~/.ssh/id_rsa
ssh-keygen -t rsa -C "邮箱" -b 4096
共有 人打赏支持
粉丝 17
博文 96
码字总数 88874
作品 1
×
麦拂沙
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: