golang代码能不能加密


当前第2页 返回上一页

与其他语言默认有更高级的封装不同,golang中需要依据不同的概念,自己组合进行封装处理

PEM: 通常是以.pem结尾的文件,在密钥存储和X.509证书体系中使用比较多,下面是一个X509证书下的PEM格式:

1

2

3

-----BEGIN CERTIFICATE-----

    base64

-----END CERTIFICATE-----

PKCS:这是一个庞大的体系,不同的密钥采用不同的pkcs文件格式。如私钥采用pkcs8。

X.509:这是一个公钥管理基础(public key infrastructure, pki),在IETF中通常对应PKIX。

说明:

使用 openssl(如openssl genrsa -out rsa_private_key.pem 1024)生成的pem文件,就是符合PEM格式的,以-----BEGIN RSA PRIVATE KEY-----开头,-----END RSA PRIVATE KEY-----结尾。

也可以转换为pkcs8:

1

openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

清楚了上面几种概念与格式之后,编写golang对应的公钥与私钥加解密方式,就相对容易一些,首先是将pem文件解码,然后进行对应的密码解码为golang支持的结构体,再进行相应的处理。

如对于私钥,可以进行如下操作进行签名:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

block, _ := pem.Decode([]byte(key))

if block == nil {       // 失败情况

    ....

}

 

private, err := x509.ParsePKCS8PrivateKey(block.Bytes)

if err != nil {

    ...

}

 

h := crypto.Hash.New(crypto.SHA1)

h.Write(data)

hashed := h.Sum(nil)

 

// 进行rsa加密签名

signedData, err := rsa.SignPKCS1v15(rand.Reader, private.(*rsa.PrivateKey), crypto.SHA1, hashed)

...

更多golang知识请关注golang教程栏目。

以上就是golang代码能不能加密的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

golang- go语言学习笔记之定义变量

golang令牌桶实现 [go-rate] 速率限制器

golang在日志中打印堆栈信息

now扩展-go的时间工具箱

数组指针做函数参数

手撸golang 结构型设计模式 代理模式

手撸golang 基本数据结构与算法 堆

【译】使用 go modules

golang 泛型

golang可以写单片机吗

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...