首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • C#编程题,字符串加密!请高手解决 [已结贴,结贴人:coffee0922]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-29 09:50:40 楼主
    设计一个方法  可以将字符串按下面要求加密:
        字符串最后一个字母放在加密后的第一位,其它字母的值偏移3.
        主程序负责接收用户键入的字符串,之后调用该方法加密,加密后主程序显示在屏幕上.
        例:  明文=“Welcome”  密文=“eZhofrp”
    (注意:A-Z和a-z之间还有很多ASII字符,所以要用到模运算)
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-29 09:58:201楼 得分:0
    像数字 符号这些楼主打算怎么处理的 难道是纯字母?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-29 10:03:132楼 得分:0
    问以下,如果是"x-z"和"X-Z"该怎么编码?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Tll_W
    • 等级:
    发表于:2008-05-29 10:09:213楼 得分:0
    是不是x+3以后要转回去啊?就是变成a了?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cancerser
    • 等级:
    发表于:2008-05-29 10:19:534楼 得分:10
    string 明文 = "Welcome";
    ArrayList al = new ArrayList();
    for (int i = 0; i < 明文.Length - 1; i++)
    {
            al.Add((char)(明文[i] + 3));
    }
    al.Insert(0,明文[明文.Length - 1]);
    string 密文 = new string ((char[])al.ToArray(typeof(char)));
    //大概是这么个意思 自己根据效率调整
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-29 10:27:465楼 得分:10
    看标题还以为是求md5算法呢,纯ascii码的话:
    C# code
    for(int 0 =1;i<str.Length-1;i++) str[i]=(char)(((int)str[i]+3)%128); str=str.SubString(str.Length-2)+str.SubString(0,str.Length-1)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-29 10:28:556楼 得分:10
    C# code
    for(int i =0;i<str.Length-1;i++) str[i]=(char)(((int)str[i]+3)%128); str=str.SubString(str.Length-2)+str.SubString(0,str.Length-1)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-29 10:29:447楼 得分:20
    C# code
    private string methord(string targestr) { if (string.IsNullOrEmpty(targestr)) return targestr; targestr = targestr.Trim(); char[] list = targestr.ToCharArray (); char b = list[list.Length - 1]; char a = list[0]; char c = list[0]; for (int i = 0; i < list.Length-1; i++) { c=(char)( (int)a+3); if (list[i] > 'Z' && list[i] < 'a') list[i] = 'A'; else { if( list[i] > 'z') list[i] = 'a'; } a = list[i + 1]; list[i + 1] = c; } list[0] = b; return new string(list); }


    已经过测试.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-29 10:38:378楼 得分:0
    呵呵,不好意思,有几处没有修改过来,
    因为楼主么有说清楚,如果是X则加密后为A,Y为B ,等等z为c;
    C# code
    private string methord(string targestr) { if (string.IsNullOrEmpty(targestr)) return targestr; targestr = targestr.Trim(); char[] list = targestr.ToCharArray (); char b = list[list.Length - 1]; char a = list[0]; char c = list[0]; for (int i = 0; i < list.Length-1; i++) { c=(char)( (int)a+3); if (c > 'Z' && c < 'a') c =(char )( 'A'+c-'Z'-1); else { if( c > 'z') c = (char )('a'+c-'z'-1); } a = list[i + 1]; list[i + 1] = c; } list[0] = b; return new string(list); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-29 10:51:389楼 得分:0
    基本就是上面说的那样解决。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-29 11:13:1610楼 得分:0
    如果只有A-Z和a-z的话 可以这样 可以依次类推
    C# code
    namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string pwdLibrary = "defghijklmnopqrstuvwxyzabcDEFGHIJKLMNOPQRSTUVWXYZABC"; string test = "sahjdshHDSGHDc"; string pwd = test[test.Length-1].ToString(); for (int i = 0; i < test.Length - 1; i++) { char c = test[i]; pwd += (c >= 'a' ? pwdLibrary[c - 'a'].ToString() : pwdLibrary[26+c - 'A'].ToString()); } Console.WriteLine(pwd); } } }
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved