我要个字符串的问题
我需要对输入的字符串进行加密
就是+3~
w变z
e变h
怎么处理啊
问题点数:20、回复次数:8Top
1 楼JasonHeung(拥有一切不过就这样笑着哭)回复于 2005-02-02 14:03:58 得分 0
string Encrypt(string src)
{
byte[] b = System.Text.Encoding.Default.GetBytes(src);
int i;
for (i = 0 ; i < b.GetLength(0); ++i)
{
b[i] += 3;
}
return System.Text.Encoding.Default.GetString(b);
}
Top
2 楼zerohay(千里梦惊雪)回复于 2005-02-02 14:12:04 得分 0
我的是思考想法~~
不要代码Top
3 楼yufenfeila(雨纷飞啦)回复于 2005-02-02 14:16:46 得分 20
改写了一下楼上的
string Encrypt(string src)
{
byte[] b = System.Text.Encoding.Default.GetBytes(src);
int i;
for (i = 0 ; i < b.GetLength(0); ++i)
{
b[i] += 3;
if (b[i] > 122)
b[i] -= 26;
}
return System.Text.Encoding.Default.GetString(b);
}Top
4 楼JasonHeung(拥有一切不过就这样笑着哭)回复于 2005-02-02 14:19:37 得分 0
思考方法就是将字符串转成byte[]即字节数组,然后进行处理,最后在转成字符串输出,如果加密后的结果有值变成非ASCII字符,可转成Base64编码输出。祝你快乐!Top
5 楼yufenfeila(雨纷飞啦)回复于 2005-02-02 14:19:55 得分 0
把字符串转换成byte型数组,然后把每个byte加上3,这样字符就增大3,在ascii码中,字符是顺序存放的,增大3就是用后面第三个字符
这样再转换回来,就变成你想要的了Top
6 楼liduke(天下有雪)回复于 2005-02-02 14:20:33 得分 0
每个字符的asc码+3后-26Top
7 楼JasonHeung(拥有一切不过就这样笑着哭)回复于 2005-02-02 14:20:39 得分 0
加密解密类:
using System;
using System.Text;
using System.Globalization;
using System.Security.Cryptography;
using System.Windows.Forms;
namespace Jh.Base.Encrypts
{
public class JhEncrypt
{
public JhEncrypt()
{
}
public static string Encrypt(string original)
{
return Encrypt(original,"JASONHEUNG");
}
public static string Decrypt(string original)
{
return Decrypt(original,"JASONHEUNG",System.Text.Encoding.Default);
}
public static string Decrypt(string original, string key)
{
return Decrypt(original,key,System.Text.Encoding.Default);
}
public static string Decrypt(string original,Encoding encoding)
{
return Decrypt(original,"JASONHEUNG",encoding);
}
/// <summary>
/// 加密
/// </summary>
/// <param name="original">原始文字</param>
/// <param name="key">密钥</param>
/// <param name="encoding">字符编码方案</param>
/// <returns>密文</returns>
public static string Encrypt(string original, string key)
{
byte[] buff = System.Text.Encoding.Default.GetBytes(original);
byte[] kb = System.Text.Encoding.Default.GetBytes(key);
return Convert.ToBase64String(Encrypt(buff,kb));
}
/// <summary>
/// 解密
/// </summary>
/// <param name="encrypted">密文</param>
/// <param name="key">密钥</param>
/// <param name="encoding">字符编码方案</param>
/// <returns>明文</returns>
public static string Decrypt(string encrypted, string key,Encoding encoding)
{
byte[] buff = Convert.FromBase64String(encrypted);
byte[] kb = System.Text.Encoding.Default.GetBytes(key);
return encoding.GetString(Decrypt(buff,kb));
}
public static byte[] MakeMD5(byte[] original)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
byte[] keyhash = hashmd5.ComputeHash(original);
hashmd5 = null;
return keyhash;
}
/// <summary>
/// 加密
/// </summary>
/// <param name="original">原始数据</param>
/// <param name="key">密钥</param>
/// <returns></returns>
public static byte[] Encrypt(byte[] original, byte[] key)
{
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = MakeMD5(key);
des.Mode = CipherMode.ECB;
return des.CreateEncryptor().TransformFinalBlock(original, 0, original.Length);
}
/// <summary>
/// 解密数据
/// </summary>
/// <param name="encrypted">密文</param>
/// <param name="key">密钥</param>
/// <returns></returns>
public static byte[] Decrypt(byte[] encrypted, byte[] key)
{
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Key = MakeMD5(key);
des.Mode = CipherMode.ECB;
return des.CreateDecryptor().TransformFinalBlock(encrypted, 0, encrypted.Length);
}
/// <summary>
/// 加密
/// </summary>
/// <param name="original">原始数据</param>
/// <param name="key">密钥</param>
/// <returns></returns>
public static byte[] Encrypt(byte[] original)
{
byte[] key = System.Text.Encoding.Default.GetBytes("JASONHEUNG");
return Encrypt(original,key);
}
/// <summary>
/// 解密数据
/// </summary>
/// <param name="encrypted">密文</param>
/// <param name="key">密钥</param>
/// <returns></returns>
public static byte[] Decrypt(byte[] encrypted)
{
byte[] key = System.Text.Encoding.Default.GetBytes("JASONHEUNG");
return Decrypt(encrypted,key);
}
}
}Top
8 楼zerohay(千里梦惊雪)回复于 2005-02-02 14:21:39 得分 0
这种题有多种解法
能不能对字符串直接操作~直接把一个字母进行加密Top
相关问题
- 我有n个字符串,我如何检测出字符串中带有#的字符串?
- 字符串问题 ,比如有一个字符串"我你他",可否将这个字符串按一定规则加密成其它字符,需要还原!!
- 在一个长字符串中找出一个我需要的短字符串是哪一个函数?
- 给你一个字符串s :string ,我要得到该字符串的第二个字符怎么办!
- 一个字符串里,我想替换多个字符串,如果它们存在的话
- 谁能给我个字符串和这个字符串的CRC32校验码,谢谢!
- 我怎么把一个malloc的字符串变量得值复制给CString对象的字符串去?
- 我想从字符串中提取一个子字符串应该用什么函数?
- 在一个很长的字符串中,如何取出我想要的字符串呢?
- 我想取一个字符串中某个字符做判断!




