体验地址:/sinocrypt
规则
- 用户提供明文和密钥,可以加密并得到密文
- 用户提供密文和密钥,可以解密并得到明文
- 明文可以是任意长度(Unicode)字符串
- 密钥可以是任意长度(Unicode)字符串
- 密文是由汉语中最常使用的1024个汉字组成的字符串
- 即便固定密钥和明文,每次加密仍然会生成不同的密文
- 即便使用错误的密钥,仍有一定概率从密文中解密出有意义的内容
- 在1024汉字之外的其他汉字,以及英文数字标点符号等,可以插入到密文中而不改变解密结果
- 测试期间对明文和密文的长度做了最大限制
例子
- encrypt("光复香港", "祖国万岁") => "影书近明无族表敌算喝你逃"
- decrypt("光复香港", "影书近明无族表敌算喝你逃") => "祖国万岁"
技术
- 基于ChaCha20,所用key和nonce均来自KDF(user_key+salt),其中user_key由用户提供(任意长度的Unicode字符串),salt为32bit真随机数
- 自动切换gbk/utf8
- 自动开启snappy压缩
- 我司不对因使用此密码造成的任何后果负责
- 算法的名字是临时起的
- 源码在 https://github.com/thphd/2047/blob/master/sb1024/sb1024.py