hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 文章 - 后端开发 - 正文 看Cosplay古风插画小姐姐,合集图集打包下载:炫龙网 · 炫龙图库

golang代码能不能加密_后端开发

2019-12-29后端开发ki4网24°c
A+ A-

golang代码加密要领:

DES加解密

golang中的规范库crypto/des中有DES的完成,然则golang库的形貌比较简单,假如不熟悉DES的加密划定规矩,是不轻易
举行响应代码编写的,与第三方举行差别言语之间的加密与解密时,也轻易殽杂,涌现毛病。

差别的平台与言语举行DES加解密对接时,须要晓得对方的是采纳何种加密形式以及何种添补体式格局:

Windows 默许是CBC形式,CryptSetKeyParam函数,openssl 函数名中直接表明

Java 中假如Cipher.getInstance()中不填写,默许是DES/ECB/PKCS5Padding

C# 中默许是CBC形式,PKCS7Padding(PKCS5Padding)

golang默许供应的是CBC形式,所以关于ECB形式,须要本身编写代码

PKCS5Padding与PKCS5Unpadding

    func PKCS5Padding(ciphertext []byte, blockSize int) []byte {
        padding := blockSize - len(ciphertext)%blockSize
        padtext := bytes.Repeat([]byte{byte(padding)}, padding)
        return append(ciphertext, padtext...)
    }
 
    func PKCS5Unpadding(origData []byte) []byte {
        length := len(origData)
        unpadding := int(origData[length-1])
        return origData[:(length - unpadding)]
    }

ECB加密形式

 
        block, err := des.NewCipher(key)
        if err != nil {
            ...
        }
        bs := block.BlockSize()
        src = PKCS5Padding(src, bs)
        if len(src)%bs != 0 {
            ....
        }
        out := make([]byte, len(src))
        dst := out
        for len(src) > 0 {
            block.Encrypt(dst, src[:bs])
            src = src[bs:]
            dst = dst[bs:]
        }
        ...
    }

RSA加解密

与其他言语默许有更高等的封装差别,golang中须要根据差别的观点,本身组合举行封装处置惩罚

PEM: 一般是以.pem末端的文件,在密钥存储和X.509证书系统中运用比较多,下面是一个X509证书下的PEM花样:

-----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:

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

清晰了上面几种观点与花样以后,编写golang对应的公钥与私钥加解密体式格局,就相对轻易一些,首先是将pem文件解码,然后举行对应的暗码解码为golang支撑的构造体,再举行响应的处置惩罚。

如关于私钥,能够举行以下操纵举行署名:

    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代码能不能加密的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
golang代码能不能加密_后端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>