前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从一个需要三个密钥的算法聊聊加解密

从一个需要三个密钥的算法聊聊加解密

原创
作者头像
horsley
发布2019-04-09 22:51:46
1.1K0
发布2019-04-09 22:51:46
举报

网上瞎逛逛到一个 des 加解密需要三个密钥的,一开始以为是3des,标准3des加密 使用密钥 k1加密一次,k2解密一次,k3加密一次得到加密结果,但是仔细一看我逛到的那个实现,又好像和标准实现相去甚远,经过一番搜索,我感觉我找到了原贴

这是一个十多年的古董帖子
这是一个十多年的古董帖子

原始作者 id guapo 前辈,帖子标题为学习了 des 算法之后实现的 javascript 版本,其实另外还有一个 java 版的。十多年前可能还没什么人做这一款加密算法的标准实现,所以 guapo 同学在学习了des 算法之后实现了 java 和 javascript 可以互通的加解密版本。这个算法应该是后来被各种复制到其他使用场景中,例如这里

这个代码可能在当时属于开天辟地的作品,放到今天来看……简直想打人(JS 版),实现代码层次极深,代码重复情况相当恶劣,大体结构上你大概从现代的代码编辑器的导航器里面就看出了端倪。

可怕的嵌套和结构性重复
可怕的嵌套和结构性重复

那么在现代主流观点我们会怎么使用加解密呢?我们非常不提倡自行实现加解密算法,尤其是创新性的加解密算法,首先其安全性很难得到保证,其次会在跨系统、编程语言的实现对齐上遇到很大的麻烦。

我们提倡使用标准的加解密算法,例如对称加密的AES ,非对称加密 RSA ;hash 算法方面我们已经不再推荐使用 md5,主流观点推荐使用 SHA。一个可靠的加密算法搭配足够的密钥长度可以保证足够的加密强度。当我们使用标准的加解密算法的时候,各种语言相关的标准加解密实现相对可靠一些。我们只要保证好密钥的安全,基本上没有什么大问题。

现在腾讯云上已经推出了加解密相关的密钥管理服务,提供密钥管理和数据加解密能力,可以了解一下。讲人话基本上是由密钥管理服务 KMS 管理主密钥,用主密钥来生成应用数据密钥,再用数据密钥在业务中加密数据。接口封装比较友好,解密接口甚至都不需要指定主密钥,猜测加密后会有其他元数据索引主密钥的 id。用户可以创建多个主密钥并且区分使用场景,也可以对单个主密钥进行禁用和启用,方便用户可以对密钥的生命周期进行管理。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
密钥管理系统
密钥管理系统(Key Management Service,KMS)是一款安全管理类服务,可以让您轻松创建和管理密钥,保护密钥的保密性、完整性和可用性,满足用户多应用多业务的密钥管理需求,符合合规要求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档