当前位置: 首页 > news >正文

如何通过做网站月入上万人民日报最新消息

如何通过做网站月入上万,人民日报最新消息,青海公司网站建设哪家快,visual studio怎么做网页在Go语言中,crypto/cipher包提供了加密和解密消息的功能。这个包实现了各种加密算法,如AES、DES、3DES、RC4等,以及相应的模式,如ECB、CBC、CFB、OFB、CTR等。以下是如何使用crypto/cipher包进行加密和解密操作的基本步骤&#xf…

在Go语言中,crypto/cipher包提供了加密和解密消息的功能。这个包实现了各种加密算法,如AES、DES、3DES、RC4等,以及相应的模式,如ECB、CBC、CFB、OFB、CTR等。以下是如何使用crypto/cipher包进行加密和解密操作的基本步骤:

  1. 选择加密算法和模式
    首先,你需要选择一个加密算法和一个工作模式。例如,AES算法与CBC模式的组合是一种常用的选择。

  2. 生成密钥和初始化向量(如果需要)
    对于某些加密模式,如CBC、CFB、OFB等,你需要一个初始化向量(IV)。此外,你还需要一个密钥,它的长度取决于你选择的算法。

package usecaseimport ("bytes""context""crypto/aes""crypto/cipher""encoding/base64""fmt""math/rand"
)type Oauth2UseCase struct {key   []byteblock cipher.Block
}
// 实例化结构
func NewOauth2UseCase() Oauth2UseCase {return &Oauth2UseCase{key: []byte("x1selczyiorss9jmrxllfqhykwkw8hlp")}
}

加密数据

func (u *Oauth2UseCase) aesEncrypt(orig string) (string, error) {// 生成随机盐值salt := rand.Intn(25)orig = orig + string(u.key[salt:salt+5])fmt.Println("orig", salt, orig)// 转成字节数组origData := []byte(orig)// 分组秘钥block, err := aes.NewCipher(u.key)if err != nil {return "", err}// 获取秘钥块的长度blockSize := block.BlockSize()// 补全码origData = PKCS7Padding(origData, blockSize)// 加密模式blockMode := cipher.NewCBCEncrypter(block, u.key[:blockSize])// 创建数组cryted := make([]byte, len(origData))// 加密blockMode.CryptBlocks(cryted, origData)//使用RawURLEncoding 不要使用StdEncoding//不要使用StdEncoding  放在url参数中回导致错误return base64.RawURLEncoding.EncodeToString(cryted), nil
}

解密数据

func (u *Oauth2UseCase) aesDecrypt(cryted string) (string, error) {//使用RawURLEncoding 不要使用StdEncoding//不要使用StdEncoding  放在url参数中回导致错误crytedByte, _ := base64.RawURLEncoding.DecodeString(cryted)// 分组秘钥block, err := aes.NewCipher(u.key)if err != nil {return "", err}// 获取秘钥块的长度blockSize := block.BlockSize()// 加密模式blockMode := cipher.NewCBCDecrypter(block, u.key[:blockSize])// 创建数组orig := make([]byte, len(crytedByte))// 解密blockMode.CryptBlocks(orig, crytedByte)// 去补全码orig = PKCS7UnPadding(orig)return string(orig)[:11], nil
}

处理填充

在加密和解密过程中,你可能需要对数据进行填充和去填充。填充的目的是确保数据的大小是加密算法块大小的倍数。常见的填充方案有PKCS#7、Zero Padding等。

// PKCS7Padding 补码
func PKCS7Padding(ciphertext []byte, blocksize int) []byte {padding := blocksize - len(ciphertext)%blocksizepadtext := bytes.Repeat([]byte{byte(padding)}, padding)return append(ciphertext, padtext...)
}// PKCS7UnPadding 去码
func PKCS7UnPadding(origData []byte) []byte {length := len(origData)unpadding := int(origData[length-1])return origData[:(length - unpadding)]
}

以上是使用crypto/cipher包进行基本加密和解密操作的步骤。在实际应用中,你可能需要结合其他安全实践,如使用安全的随机数生成器、管理密钥、处理错误等,以确保加密过程的安全性。此外,对于某些应用场景,你可能还需要考虑使用更高级的加密库,如crypto/nacl或golang.org/x/crypto,它们提供了更多的加密算法和更高级的安全性。

// 加密数据,如手机号
code, err := u.aesEncrypt(phone)
//解密数据
phone, err := u.aesDecrypt(code)
http://www.wooajung.com/news/32917.html

相关文章:

  • 做直播网站需要学什么软件网络促销策略
  • 用户权限网站关键词整站优化
  • 网站建设概况今日国内新闻热点
  • 池州公司做网站百度seo通科
  • 青浦区做网站百度免费网站制作
  • 开发的网站能运行在其他网站推广工具有哪些
  • 培训管理平台企业站seo报价
  • 深圳哪家做网站比较好哪里有整站优化
  • 免费做海报的网站公司网站的作用
  • 可以做淘宝店铺开关灯网站运营是做什么的
  • 直播类网站怎么做北京网站建设优化
  • 一个门户网站多少钱宁波seo推广定制
  • 做淘宝需要的网站app开发工具
  • 自己做的网站点首页出错站长工具seo综合查询全面解析
  • 铜煤建设网站自己开发网站怎么盈利
  • 深圳做网站的公司有哪些软文客
  • 岳阳网站建设哪里有环球资源网站网址
  • 合肥网站建设培训班网站排名优化客服
  • 流媒体视频网站建设百度指数功能模块有哪些
  • 潍坊网络推广公司外贸网站推广优化
  • 广州商城网站建设南宁网站建设公司
  • 网站建设标准流程及外包注意事项招工 最新招聘信息
  • 蔡文胜做的个人网站seo技术学院
  • 做p2p投资理财的网站软文推广公司有哪些
  • 网站建设后需要交费吗百度官网下载电脑版
  • 郑州做网站公司汉狮价格2021年最为成功的营销案例
  • 企业网站建设兴田德润实惠品牌整合营销传播
  • 网站建设常用模板怎么查询搜索关键词
  • 建筑招聘网站哪个好软件培训机构
  • 能播放优酷视频的网站怎样做seo推广公司教程