求一详细的加密方法

勿腻阳 2009-09-18 09:24:28
写一方法对一段字符串加密,要求加密后的字符串的第一个字母是原字符串中的最后一个字母,其他的每个字符是对应的原字符串中的前一个字符的值加上3,比如"welcome"末尾字符为e,"welcom"一次加上3后为"zhofrp",所以加密后的结果为"ezhofrp",用C#实现一个以上算法的解密算法,即输入"zhofrp",输出为"welcome"。
请高手不惜赐教,谢谢!
...全文
116 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zanda 2009-09-20
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace encreption
{
class Program
{

static void Main(string[] args)
{
//thinking way : char => int (process them in int ) => char (back to char)
//ezhofrp
char [] c = {'e','z','h','o','f','r','p',};

int[] c_int = new int[c.Length];
char[] output = new char[c.Length+1];
output [output.Length -2] = c[0];

for (int i = 1; i <= c.Length - 1;i++ )
{
if ((c[i] >= 'a' && c[i] <= 'z') || (c[i] >= 'A' && c[i] >= 'Z'))
{
c_int[i]= (int)c [i]- 3;
if (c_int[i] > 90 && c_int[i] <= 87 || c_int[i] > 122)
{
c_int[i] -= 26;
}
output [i-1] = (char)c_int[i];
}


}
for (int j = 0;j <= output .Length -1; j++)
Console.Write("{0}", output[j]);
}
}
}
勿腻阳 2009-09-19
  • 打赏
  • 举报
回复
自己再顶一下
勿腻阳 2009-09-19
  • 打赏
  • 举报
回复
其实没有那么复杂,题目的要求只是用C#语言自己写一个加解密的方法,不要用已有的方法。
wzuomin 2009-09-19
  • 打赏
  • 举报
回复
学习
tianrui456 2009-09-19
  • 打赏
  • 举报
回复
md5是不可解码的......... 加密以后就休想解码出来(至少现在不可以)
zhizlm 2009-09-19
  • 打赏
  • 举报
回复
详细加密 就用 md5.
veigd 2009-09-19
  • 打赏
  • 举报
回复
mark
yuanmanguo 2009-09-19
  • 打赏
  • 举报
回复
mark
勿腻阳 2009-09-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyq11 的回复:]
public static string EnCode(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return "";
            }
            byte[] buff = Encoding.Default.GetBytes(str);
            int len=mstr.Length;
            StringBuilder sb = new StringBuilder();
            sb.Append(buff[i-1].ToString());
            for (int i = 0; i < buff.Length; i++)
            {               
                j = (int)buff[i];
                j=+3;
                sb.Append((char)j);//要考虑是否超出范围
            }
            return sb.ToString();
        }



[/Quote]

谢谢帮助,但你的程序好像错误不少,能给个准确的吗?谢谢!
勿腻阳 2009-09-19
  • 打赏
  • 举报
回复
不好意思,是我写错了,呵呵!应该是输入“ezhofrp”,输出为"welcome"。
让各位费心了,加分以表歉意!
winslow 2009-09-19
  • 打赏
  • 举报
回复
输入"ezhofrp",输出为"welcome"。
江南小鱼 2009-09-19
  • 打赏
  • 举报
回复
要求加密后的字符串的第一个字母是原字符串中的最后一个字母,其他的每个字符是对应的原字符串中的前一个字符的值加上3,比如"welcome"末尾字符为e,"welcom"一次加上3后为"zhofrp",所以加密后的结果为"ezhofrp"

你的要求以及举例有些矛盾。要求应该是加密后字符数比原字符串字符数多1;但是你的举例表明,加密前后字符串个数不变。
以上算法是加密前后字符串个数不变!
这样加密之后解密就不容易了,因为加密时最后一个字符舍弃了。
江南小鱼 2009-09-19
  • 打赏
  • 举报
回复
static string encrypt(string str)
{
StringBuilder strS=new StringBuilder(str.Substring(str.Length-1).ToString());
char[] str1=str.Substring(0,str.Length-1).ToCharArray();
int temp;
for (int i = 0; i < str1.Length; i++)
{
temp=(int)str1[i]+3;
if (temp <= 122)//z的ASCII码值122
{
strS.Append((char)temp);
}
else
{
int sub = temp - 122;
strS.Append((char)(96 + sub));//a的ASCII码值96
}
}
return strS.ToString();
}
zhangxun2007 2009-09-19
  • 打赏
  • 举报
回复
输入六位,为什么输出七位?
wuyq11 2009-09-18
  • 打赏
  • 举报
回复
public static string EnCode(string str)
{
if (string.IsNullOrEmpty(str))
{
return "";
}
byte[] buff = Encoding.Default.GetBytes(str);
int len=mstr.Length;
StringBuilder sb = new StringBuilder();
sb.Append(buff[i-1].ToString());
for (int i = 0; i < buff.Length; i++)
{
j = (int)buff[i];
j=+3;
sb.Append((char)j);//要考虑是否超出范围
}
return sb.ToString();
}



白s菜 2009-09-18
  • 打赏
  • 举报
回复
caeser密码
otsing 2009-09-18
  • 打赏
  • 举报
回复
凯撒密码?
别样苍茫 2009-09-18
  • 打赏
  • 举报
回复
字符串操作么。。。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧