$go get github.com/wenzhenxi/gorsa

test.go文件的内容

运行: $go run test.go

package main

import (
"fmt"
"log"
"errors"
"github.com/wenzhenxi/gorsa"
) var Pubkey = `-----BEGIN 公钥-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtjjnowvv475Aa+yxLRJu
wS8P6wIxtOmHbB9A5Vb77js9WaUYnWsC2R0JCz+24RZuuC4nn4whZvwMKBpI9WQh
vq6y4q07pnpFpu0x6jcSXNn/e+CWuC6HQXSorkwd2gP5pqQVsiT/a1xPRVpPVDpF
0AOR2TRDbXQx7vi/mmHnd4NKKxkjbmNG/tpjjpjuMhKj1geJeG46lcfpnvEUIYkK
ac1wgED09jcFhZDdtKV3f4VWUw+UntZLMIr1jZQn70HyVvSa8VvcFTchpC6+fE9l
l0D6Bb7Q9LD1rfs9SidGwX27BH05dx+aY1H9v8GTRHHwXrpvUP+VsTfH2puS8Kv7
awIDAQAB
-----END 公钥-----
` var Pirvatekey = `-----BEGIN 私钥-----
MIIEpAIBAAKCAQEAtjjnowvv475Aa+yxLRJuwS8P6wIxtOmHbB9A5Vb77js9WaUY
nWsC2R0JCz+24RZuuC4nn4whZvwMKBpI9WQhvq6y4q07pnpFpu0x6jcSXNn/e+CW
uC6HQXSorkwd2gP5pqQVsiT/a1xPRVpPVDpF0AOR2TRDbXQx7vi/mmHnd4NKKxkj
bmNG/tpjjpjuMhKj1geJeG46lcfpnvEUIYkKac1wgED09jcFhZDdtKV3f4VWUw+U
ntZLMIr1jZQn70HyVvSa8VvcFTchpC6+fE9ll0D6Bb7Q9LD1rfs9SidGwX27BH05
dx+aY1H9v8GTRHHwXrpvUP+VsTfH2puS8Kv7awIDAQABAoIBAHc2NTxy48bvwX+Z
wrPE+lZCLrzFm7VKjkELFU60oG7TrKhIHRlnV96oYzFLxp3tKhQuhdeYOoYAYQef
Ypm/n1/7NKadRIf+ODEjvmMHEmlSaRUm8hOexPfqlSwqOeFWdm4xrMv17m/TXTz2
/y0QTnnuy+z4hyBFQyGe9OLQKDkDvXpbXqIrAK3kSuUeyQSZm1Ifq6WEQ/cRmMkd
bmjPbZ+QOeg2vvnuwQLNooANEVd//cT9M5vK+iiP6MvNz3IEqBqn4ZcOjqhfLQ7V
w2G09Ge1SL/v0cG9weSM6nsdEFxsKM7S3Ybtz6LMpbVC2WX94zyWaCJXRdbHzFzM
D8NzerkCgYEA41B5QETnLaoQrEm6rsKbO19p8Ha0cNTP4Ybk/gk+qk7LLBcT1Mze
vOfgV2adAkMSr78hF+MHjn2DgnCEiFdbMZLj6VRobzLWvVLaIEERkmJtQV9ef1GP
C2EzyTxsFBXNBpGDLOREbiG8euGWjpvU8wvj5yUGIWORzZWUaqrtTV0CgYEAzTe0
eZIGRW0w4y0YGr4FaDzxejzkMK7l0kfJ7qNaPMOdTzKRqV4TM4karClvMKI5kuLZ
MpZzUVotMfkqqfQsmWXyZXGBkai9rwrygP1HsC1rSFGusCV6m71axZXZ8GEimnVI
kEqvPGvtdW8Z3CpSel5AHC24sYWmrOPQaEPQl2cCgYBQr/0KOisRQ3+9mEJCzGNL
tPem2ov8TR4pQLfCEMgErgliciKg88PQrEIu5Aaxidt1NNPrZbQF+TmYMJZqyw9c
znZGGackaZheBa3VqyMwoe2EOfUSHoI3GN7H/MGkc4SeY0J7yd8cdK8xsye9IUV6
rGrOXo8JhQ15OzI+lsO7JQKBgQC4IM0Lbxu1Wz1L9//yrqBHYLcBiHTtwV9vhv4F
4gdrEdCpaKQNJN1xlgiahCrBpiymQGfE3fzl91Upy3ieOPlzQWd14Zvxx0c6MUZY
ueiCiJ4Dq1ZjsZ0K86DoO4XqCh10HNtYq8oDGotanK7FPiv2o24+Wj+m+FYONfGe
O4qC7QKBgQDclDo5hOyDIaIm/qvq00ZAIudXcoZeKqdjnfXWC2tYB97guqXZPnFa
zE1rstdDO1c8OTZ1Av1VmnI5dI1OUeGZA6nxol6m1LbMfyME/7nQYW+UBCVLqtTx
NY75jbQrg1BTfEGSm9pujsEhVGdK3JiQHbaiw/q5p74dKjlL4HF8Kg==
-----END 私钥-----
` func main() {
// 公钥加密私钥解密
if err := applyPubEPriD(); err != nil {
log.Println(err)
}
// 公钥解密私钥加密
if err := applyPriEPubD(); err != nil {
log.Println(err)
}
} // 公钥加密私钥解密
func applyPubEPriD() error {
pubenctypt, err := gorsa.PublicEncrypt(`hello world`,Pubkey)
if err != nil {
return err
}
fmt.Println("%s is:", pubenctypt)
pridecrypt, err := gorsa.PriKeyDecrypt(pubenctypt,Pirvatekey)
if err != nil {
return err
}
fmt.Println("%s is:", pridecrypt)
if string(pridecrypt) != `hello world` {
return errors.New(`解密失败`)
}
return nil
} // 公钥解密私钥加密
func applyPriEPubD() error {
prienctypt, err := gorsa.PriKeyEncrypt(`hello world`,Pirvatekey)
if err != nil {
return err
} pubdecrypt, err := gorsa.PublicDecrypt(prienctypt,Pubkey)
if err != nil {
return err
}
if string(pubdecrypt) != `hello world` {
return errors.New(`解密失败`)
}
return nil
}

  

golang RSA2加密/解密的更多相关文章

  1. golang AES/ECB/PKCS5 加密解密 url-safe-base64

    因为项目的需要用到golang的一种特殊的加密解密算法AES/ECB/PKCS5,但是算法并没有包含在标准库中,经过多次失败的尝试,终于解码成功,特此分享: /* 描述 : golang AES/EC ...

  2. [Golang] base64加密与解密

    首先解释以下什么是base64(来自百度百科): Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64 ...

  3. golang实现aes-cbc-256加密解密过程记录

    我为什么吃撑了要实现go的aes-cbc-256加密解密功能? 之前的项目是用php实现的,现在准备用go重构,需要用到这个功能,这么常用的功能上网一搜一大把现成例子,于是基于go现有api分分钟实现 ...

  4. GOLANG 加密,解密,GUID 小方法

    golang的 MD5加密.BASE64解密  guid 的代码: /** * 用于加密,解密,(包含MD5加密和base64加密/解密)以及GUID的生成 * 时间: * zhifieya */ p ...

  5. Golang之AES/DES加密解密

    AES/DES加密/解密涉及4个概念:1. Block, 也叫分组, 相应加密/解密的算法. 2. BlockMode, 模式, 相应加密/解密的处理.3. InitalVectory, 初始向量4. ...

  6. golang 私钥"加密"公钥"解密"

    ---恢复内容开始---   之前工作主要使用C/C++与银行/第三方支付对接,但C/C++无法满足客户"当天给协议明天实盘上载"的开发速度以及现公司一些特殊情况,所以决定用go来 ...

  7. golang实现RSA加密解密

    非对称加密示意图: 在此可以看到,非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的.公钥用于加密,私钥用于解密. RSA公钥和私钥生成: package main import ( & ...

  8. .NET Core 使用RSA算法 加密/解密/签名/验证签名

    前言 前不久移植了支付宝官方的SDK,以适用ASP.NET Core使用支付宝支付,但是最近有好几位用户反应在Linux下使用会出错,调试发现是RSA加密的错误,下面具体讲一讲. RSA在.NET C ...

  9. 加密解密 AES RSA MD5 SHA

    加密解密: 对称加密:加密和解密相同秘钥.常见算法:AES, XTEA, 3DES. 非对称加密: 公钥加密 私钥加密. 加密和解密秘钥不同.常见算法:RSA OpenSSL> genrsa - ...

随机推荐

  1. Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计

    自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动 ...

  2. 高可用集群corosync+pacemaker之pcs安装使用

    前文我们介绍了高可用集群corosync+pacemaker的集群管理工具crmsh的常用命令的使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/tag/crms ...

  3. [Oracle/Sql] Decode与Case

    Decode和case都可以实现SQL中的条件结构,下面为用法示例: select id,name,score,decode(floor(score/20),5,'A',4,'B',3,'C',2,' ...

  4. C#编辑GridView的Thead

    背景 有这样一个需求,需要更改GridView的Thead,即表头.不只是多行表头,而是任意的内容,可能是一段文字,也可能是一个图片,综合网上的一些资料,大致整理出一些做法. 内容 大致有两种方法 第 ...

  5. 面试:为了进阿里,重新翻阅了Volatile与Synchronized

    该系列文章收录在公众号[Ccww技术博客],原创技术文章早于博客推出 在深入理解使用Volatile与Synchronized时,应该先理解明白Java内存模型 (Java Memory Model, ...

  6. matlab中如何定义函数

    首先建立M文件或直接点击(File/New/Function)建立函数文件,其中函数文件的格式是: function [输出变量] = 函数名称(输入变量) % 注释 % 函数体 如下所示,是编写的一 ...

  7. 第3章 01 python数字类型即操作

    浮点数类型 通过round函数比较浮点数之间的比较关系 复数类型 数值运算函数 小结 天天向上的力量 千分之一的力量 千分之五和百分之一的力量 在1的基础上增加天天向上的参数 在1的基础上减去天天向下 ...

  8. hystrix(6) 命令执行

    上一节中讲到了HystrixCommand有四种执行方法,这一节就来讲一下这四种方法直接的关系以及他们的实现. execute方法使用同步方式获取结果,本质是调用了queue方法获取了一个Future ...

  9. C# winform 打包成安装程序(exe)

    C# 打包成安装程序 1.扩展-> 安装扩展 联网搜索 install     2.新建安装程序项目      3.添加程序   4.添加打包需要的文件 5. 添加x86与x64文件夹,并添加s ...

  10. Java锁?分布式锁?乐观锁?行锁?

    转载自:公众号来源:码农翻身 作者:刘欣 Tomcat的锁 Tomcat是这个系统的核心组成部分, 每当有用户请求过来,Tomcat就会从线程池里找个线程来处理,有的执行登录,有的查看购物车,有的下订 ...