玖叶教程网

前端编程开发入门

JavaScript速解:凯撒密码(凯撒密码java代码)

Q:JavaScript中数据加密的意义何在?

JavaScript代码通常都是明文的,比如在浏览器环境下,即便是对源码进行了混淆,还是能够进行分析和修改。甚至使用Adobe ExtendScript Toolkit生成的二进制脚本同样可以反编译的,这是笔者曾经亲自参与过的项目里所验证过的。所以长久以来有一种假象:JS=不安全!

黑客篡改某知名企业官网事件

若是早些年,各家浏览器拼得你死我活的时候,一堆JS脚本源码在别人机器上解释执行,没法不开源,这就意味着任何加密措施都是徒劳的。但现在不同了,随着Nodejs的创立,使得javascript爆发出极强的生命力,尤其是在Typescript的加持下。如此以来不但可以实现服务器上的开发,还出现了大批的跨平台解决方案,比较流行的有NW.JS、electron等等。面对嘈杂的互联网,为了确保在传输中数据的安全性,理应采取一定的加密措施。

对编程新手来说,JavaScript是入门的不二选择

最常见的SSL加密,也就是常说的https,操作起来有点麻烦,它适合用于全局部署的安全措施。而今天介绍的是针对文本数据的加密方案,适合在javascript脚本中轻度的加解密计算,这就是接下来要介绍的一种加解密方式,凯撒密码,下面是一段来自百科的介绍:

在密码学中,恺撒密码是一种最简单且最广为人知的加密技术。

它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其下属们进行联系。

凯撒大帝半身雕塑

熟悉了规则之后,就可以javascript中轻松实现了,下图是对字母实现的凯撒加密,加解密在同一个函数实现。

javascript实现的凯撒加密

根据凯撒密码的原理,核心思路就是遍历字符串对每一个字符使用charCodeAt( )转为Unicode编码,之后就可以对Unicode编码使用各种数学运算进行偏移。同样的借助fromCharCode( )再转为字符串就完成了这个加解密的过程了。

一个函数同时实现加解密的关键在于第三个参数,当参数decrypt为true时用作解密。


其中扩展运算符(...)和三元运算符(? :)都是需要ES6环境支持的,ES5语法需要借助bable等工具的转换。之所以推荐使用凯撒加密的算法,一是可以自定义密码而不是像Base64固定的格式,二是比AES等流行算法对算力的需求小太多了,毕竟只有简单的一步数学计算。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言