Javascript 为什么atob和btoa不可逆
我正试图找到一种简单的方法来记录和暂时混淆我用Markdown写的“测验”问题的答案。(在演示过程中,我会告诉学生测验的答案,因此我不会寻找任何类型的安全加密。) 我想我可以使用Javascript 为什么atob和btoa不可逆,javascript,encoding,Javascript,Encoding,我正试图找到一种简单的方法来记录和暂时混淆我用Markdown写的“测验”问题的答案。(在演示过程中,我会告诉学生测验的答案,因此我不会寻找任何类型的安全加密。) 我想我可以使用atob(“我想混淆的消息”)然后告诉学生,他们可以在开发人员工具面板中使用btoa()来逆转这个过程。但是,以下内容不返回“一”: btoa( atob('one') ) 有人知道为什么它不返回“一”?JavaScript中是否有其他方法允许对消息进行松散加密和解密?(我的工作对象是绝对初学者,他们可能会被函数弄糊涂
atob(“我想混淆的消息”)
然后告诉学生,他们可以在开发人员工具面板中使用btoa()
来逆转这个过程。但是,以下内容不返回“一”:
btoa( atob('one') )
有人知道为什么它不返回“一”?JavaScript中是否有其他方法允许对消息进行松散加密和解密?(我的工作对象是绝对初学者,他们可能会被函数弄糊涂,并且在尝试向页面添加库时会非常困惑)。正如@george所指出的,在使用
atob()之前必须先使用btoa()
:
这就是原因
在Base64编码中,输出编码字符串的长度必须为
3的倍数。如果不是,则输出将填充额外的
填充字符(=
)。解码时,这些额外的填充字符将
被抛弃
var string1=“一”,
string2=“one2”;
console.log(“string1的值”,string1)
console.log(“解码字符串1”,atob(字符串1))
log(“编码的string1”,btoa(atob(string1)))
console.log(“-----------------------------------------”)
console.log(“string2的值”,string2)
console.log(“解码的string2”,atob(string2))
log(“编码的string2”,btoa(atob(string2)))
这不是错误的方法吗?akaatob(btoa(“one”))
听起来不错,非常感谢@乔治仍然很有趣,因为它不起作用。是的,我同意。值得注意的是,这个空间是非欧几里得空间。我取消了这个,因为我自己可能会在几年内用谷歌搜索这个。。。
atob( btoa( 'hello' ) )