免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5301 | 回复: 5

用异或实现简单的加密  关闭 [复制链接]

论坛徽章:
0
发表于 2004-05-25 19:23 |显示全部楼层
前几天因为需要写了个简单的字符串与“x”字符的异或实现最简单的加密。
代码贴出来,或许对其他人有用。
encrypth.sh用于对字符串加密,
  1. #!/bin/sh
  2. if [[ $# != 1 ]];then
  3.     echo " Usage: encrypt.sh clear_word"
  4.     exit 1
  5. fi

  6. word=$(echo $1 | od -An -tx1 | sed 's/..$//')

  7. for i in $(seq 1 ${#1});do
  8.     num=$(echo $word | awk -v c=$i '{print "ibase=16;"toupper($c)}' | bc)
  9.     code=$(awk -v char=$num 'BEGIN{print xor(char,120)}')
  10.     #xor(char,120)函数中的120是"x"字符的ascii值。
  11.    password=$password$code
  12. done
  13. echo ${password}
  14. unset code word num
复制代码


decrypt.sh 用于解密
  1. #!/bin/sh
  2. if [[ $# != 1 ]];then
  3.     echo "Usage: decrypt.sh  password"
  4.     exit 1
  5. fi

  6. for i in $(echo $1 | fold -2);do
  7.     code=$(awk "BEGIN{print xor($i,120)}")
  8.     letter=$(perl -e "print pack(c,$code)")
  9.     word=$word$letter
  10. done

  11. echo ${word}
  12. unset word letter code
复制代码


运行:
  1. $ ./encrypt.sh db2inst
  2. 28267417221112
  3. $ ./decrypt.sh 28267417221112
  4. db2inst
复制代码

论坛徽章:
0
发表于 2004-05-25 23:43 |显示全部楼层

用异或实现简单的加密

在<<Black Book>>中好像有这个类似的perl小脚本

论坛徽章:
0
发表于 2004-05-26 18:29 |显示全部楼层

用异或实现简单的加密

<<Black Book>>是哪本?讲啥的?perl?

论坛徽章:
0
发表于 2004-05-26 18:57 |显示全部楼层

用异或实现简单的加密

<<perl技术内蒙>>就介绍了用抑或来加密解密的片断
一次抑或加密,两次抑或还原

论坛徽章:
0
发表于 2004-07-13 10:18 |显示全部楼层

用异或实现简单的加密

好像不大对哦
比如加密 myhome
加密后文本:21116232129
将它解密则为:msFXtq   不是myhome.....
是不是和shell,perl,awk的版本及其提供的函数有关呢
我的是
GNU Awk 3.1.1
PERL v5.8.0 built for i386-linux-thread-multi
BASH 2.05b.0(1)-release

系统是RH9.0 2.4.20-8

论坛徽章:
0
发表于 2004-09-02 19:04 |显示全部楼层

用异或实现简单的加密

为什么encry.sh输入十五个以上的字符就会出错?
我在
num=$(echo $word | awk -v c=$i '{print "ibase=16;"toupper($c)}' | bc)

后面加了一行
echo "num=$num"

输入
encry.sh aaaaaaaaaaaaaaaaaa

得到
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=97
num=
2525252525252525252525252525252525120

这是怎么回事?(我是在bash下运行的,把#!/bin/sh改成了#!/bin/bash)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP