RSA加密 解密 示例及源码

设置明文:


生成密钥:


解密和加密:两种方式:



源码下载:http://download.csdn.net/download/li15850220086/10117791点击打开链接

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的 Go 和 PHP 通讯的 RSA 加密源码示例: Go 代码: ```go package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "fmt" "io/ioutil" "net/http" ) func main() { // 从文件中读取公钥 pubPEM, err := ioutil.ReadFile("public.pem") if err != nil { panic(err) } pubBlock, _ := pem.Decode(pubPEM) pubKey, err := x509.ParsePKCS1PublicKey(pubBlock.Bytes) if err != nil { panic(err) } // 生成随机数据 data := make([]byte, 32) _, err = rand.Read(data) if err != nil { panic(err) } // 使用公钥加密数据 encryptedData, err := rsa.EncryptPKCS1v15(rand.Reader, pubKey, data) if err != nil { panic(err) } // 发送加密后的数据到 PHP 服务器 resp, err := http.Post("http://localhost:8000/decrypt.php", "application/octet-stream", bytes.NewReader(encryptedData)) if err != nil { panic(err) } // 读取 PHP 服务器返回的解密后的数据 decryptedData, err := ioutil.ReadAll(resp.Body) if err != nil { panic(err) } fmt.Printf("加密前的数据:%x\n", data) fmt.Printf("加密后的数据:%x\n", encryptedData) fmt.Printf("解密后的数据:%x\n", decryptedData) } ``` PHP 代码: ```php <?php // 从文件中读取私钥 $privateKey = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQCzB5hJw7Z8G3q3V7PzJkC5t7y8tQ9uEgPfN/47MOTeN8vNQ2fN AfnbY1W/8Czv3kUdOC6nIcGZf4m4v4aDzNu6U2QlUkGl6UvS6pO6g0o+IAwA0Zf4 1FVz1M+Y2S8zPvU6S+oCk/ggA+Tt8ImvLZ2ePt0sIYgO3OyGv3q3L/PHQQIDAQAB AoGADeKxH3aVJ+YJYd7R8NcH9QdLgOGhQ2CwVJj+mkalgeGg5cs5z5Y5K30n5AiF BgK7VY+1t8h7V9gPmtE3GqCp+D8eOZfJgZrH1a5fjK5Ob5G5p5J+J7+tK0Jt8F2Q Q1t6FWL+6JYU6yQlXKvU4d4HufStJf8ZwfcInAUvU3z3qkECQQDyJcK99sF+JNQ2 H1e8jwW+eyvI3oq3pOYdI8s1sXsXQJQ2RraL1j8Ww0oKvS6U7J6UzC6y2KjF1d4f 4B0L0oZJAkEAxKfmyr1Y5Dn0nW5p5GmzA7l0Kt5hZ2QgJ1xKjV7MzjB8bsV7yCtP Ej3pCtGZfVwZuA5r5FhE0zCt5HR5VLB9pQJBAKLOJj0Q0zxZ1x2L2LLcQOHPdYV7 8Pv9u3qfEi5hL1LZ8a0L+3qg3zEYrsHcJ8zv9XQg/2bFmTqwZj8vZiDmOCMCQG4n QzC6Fv9X4zfk4nL4GZc8lZv4pS+6OYU0k0AG6yv1X9f1+4JF4aMw0ZvUJZqk3C3f zjW8sHbXlQ64T/B+OZECQDr8OvPuxH7VjKf1YR7V/8v+u9q3h3gDpNwN8eblZ+gG eLGCz5J5W5+5k5p7mzdGJzKowmQ8F/b1CmYU6Lk/6S4= -----END RSA PRIVATE KEY----- '; $privateKey = openssl_pkey_get_private($privateKey); // 从请求中读取加密后的数据 $data = file_get_contents("php://input"); // 使用私钥解密数据 openssl_private_decrypt($data, $decryptedData, $privateKey); // 发送解密后的数据回到 Go 程序 header('Content-Type: application/octet-stream'); echo $decryptedData; ``` 注意事项: - 请确保你的公钥和私钥是一对。 - 请确保你的 PHP 程序在收到加密后的数据后能够正确地使用私钥解密数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值