首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

用shell编纂的简单密码加密程序,涉及到ASCII与字符的相互转换,以及命令结果输出到变量

2013-01-26 
用shell编写的简单密码加密程序,涉及到ASCII与字符的相互转换,以及命令结果输出到变量本来是一道C语言的题

用shell编写的简单密码加密程序,涉及到ASCII与字符的相互转换,以及命令结果输出到变量

本来是一道C语言的题目,用C语言实现太简单,所以给自己找点有挑战性的玩法:用bash shell编写

加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。 算法:明文中的字母转换成其后的第4个字母,例如,A变成E(a变成e),Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。例如,China转换成密文为G l m r e。要求:在函数change中完成字母转换,在函数insert中完成增加空格,用指针传递参数。

#!/bin/bashread -p "please input password:" passwordfor ((i=0;i<${#password};i++))do  var2=`printf "%d" "'${password:$i:1}"` if (([ $var2 -gt 96 ] && [ $var2 -lt 123 ])||([ $var2 -gt 65 ] && [ $var2 -lt 91 ]))  then  if (([ $var2 -gt 65 ] && [ $var2 -lt 87 ])||([ $var2 -gt 96 ] && [ $var2 -lt 119 ]))  then   let var2=$var2+4   printf \\x`printf %x $var2`   #echo -n " "  fi  if (([ $var2 -gt 86 ] && [ $var2 -lt 91 ])||([ $var2 -gt 118 ] && [ $var2 -lt 123 ]))  then   let var2=$var2-22   printf \\x`printf %x $var2`   #echo -n " "  fi  echo -n " " else    printf \\x`printf %x $var2`   echo -n " " fidoneecho 

其中:
printf \\x`printf %x $var2`     负责将ascii码转成字符
${#password}                   可以计算变量长度
${password:$i:1}              可变量中单个字符,$i存放第几个字符,1表示输出一个字符,如改成2则可一次输出两个字符
var2=`printf "%d" "'${password:$i:1}"`           很实用的语句,可以让命令执行结果输出写入到变量,· ... ·的用法,注意是ESC下面的那个

 

 

热点排行