A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄文伯 金牌黑马   /  2013-5-22 17:10  /  1550 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄文伯 于 2013-5-22 21:12 编辑

需求: 实现字符加密,如:  输入abc 输出efg。

10 个回复

倒序浏览

回帖奖励 +5

先说一种:将abc每个字母加4就OK了
回复 使用道具 举报

回帖奖励 +5

最简单的加密方法,凯撒移位加密法,即将每个需加密字符的ascii码加上一个给定的t值,解密时扣掉这个t即可。当然,你可以将t值设为一个表达式,但是这个表达式必须是个双射的表达式,即可以还原的表达式,所以常数是最简单的符合双射原则的表达式。
下面给出移位加密法的程序:
加密:
const t=10(这里自己设定)
var s:ansistring; i:longint;
begin
  readln(s);
  for i:=1 to length(s) do s[i]:=chr(ord(s[i])+t);
  writeln(s);
end.
解密:
const t=10(一定要和加密的t值一样)
var s:ansistring; i:longint
begin
  readln(s);
  for i:=1 to length(s) do s[i]:=chr(ord(s[i])-t);
  writeln(s);
end.

希望对你有帮助!!

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 加油

查看全部评分

回复 使用道具 举报

回帖奖励 +5

没别的思路了~
回复 使用道具 举报
貌似 基础视频讲过一个简单地加密  就是对一个数"^"上你设定的数,解密就是获取你加密数后再"^"上你设定的数,如果要用字母的话(char)一下就行了吧

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
不是很明白题目的意思;
是要写完成+4这个动作的方法还是???
回复 使用道具 举报
Miss小强 发表于 2013-5-22 20:05
不是很明白题目的意思;
是要写完成+4这个动作的方法还是???

记得老毕讲过,但是自己写的时候又写错了,找不到老毕当时写的代码了
回复 使用道具 举报
+4动作是ASCII 码表的对应值+4吧。
举体操作:
  1. int[] str={'a','b','c'};
  2.                 for(int x=0;x<str.length;x++)
  3.                 {
  4.                         System.out.println(str[x]);
  5.                         str[x]+=4;
  6.                         System.out.println(str[x]);
  7.                 }
复制代码
此时再来个强制转换,转成char就变成字符啦。

  1. String str1="";
  2.                 for(int x=0;x<str.length;x++)
  3.                 {
  4.                         str1+=(char)str[x];
  5.                 }
  6.                 System.out.println(str1);
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 赞一个!

查看全部评分

回复 使用道具 举报
刘兆华 发表于 2013-5-22 20:55
+4动作是ASCII 码表的对应值+4吧。
举体操作:此时再来个强制转换,转成char就变成字符啦。 ...

十分感谢
回复 使用道具 举报
来学习个,顺便顶下黄胸
回复 使用道具 举报
黄文伯 发表于 2013-5-22 21:12
十分感谢

:#兄台客气了~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马