对字符串加密,解密
字符串中含有中文,日文,英文字符等
谢谢!!
------解决方案--------------------可以用DSA和RSA,如:
using System;
using System.Text;
using System.Security.Cryptography;
class dsacrypto_SignData {
public static void Main(String[] args){
//先要将字符串转换为字节数组,这与编码有关。
String str = "this is a test. ";
byte[] bytes = Encoding.ASCII.GetBytes(str);
//选择签名方式,有RSA和DSA
DSACryptoServiceProvider dsac = new DSACryptoServiceProvider();
byte[] sign = dsac.SignData(bytes);
//sign便是出来的签名结果。
//下面是认证了
DSACryptoServiceProvider dsac2 = new DSACryptoServiceProvider();
dsac2.FromXmlString(dsac.ToXmlString(false));
bool ver = dsac2.VerifyData(bytes, sign);
if (ver) {
Console.WriteLine( "通过 ");
} else {
Console.WriteLine( "不能通过 ");
}
}
}
------解决方案--------------------/*
Filename: encrypt_string.cs
Fuction : input a strig and encrypt a string
加密后的字符串的第一个字符是原先字符串的最后一个字符,
其余的每一个字符是对应的原字符串中的前一个字符的值加
上3。
example: welcome -> ezhofrp
*/
using System;
class Test
{
public static void Main()
{
string strInput, strOutput;
Console.WriteLine( "please input a string to encrypt: \n ");
strInput=Console.ReadLine();
Console.WriteLine( " your input string is : {0}\n ", strInput);
//Encrypt(strInput);
strOutput = Encrypt(strInput);
Console.WriteLine( "strOutput is :{0}\n ", strOutput);
}
private static string Encrypt(string strInput)
{
string strFont, strEnd;
string strOutput;
char[] charFont;
int i,len, intFont;
len = strInput.Length;
//Console.WriteLine( " strInput 's length is :{0} \n ", len);
strFont = strInput.Remove(len-1,1);
strEnd= strInput.Remove(0, len-1);
//Console.WriteLine( " strFont is : {0} \n " , strFont);
//Console.WriteLine( " strEnd is : {0} \n " , strEnd);
charFont = strFont.ToCharArray();
for(i=0; i <strFont.Length; i++)
{
intFont = (int)charFont[i] + 3;
//Console.WriteLine( " intFont is : {0} \n ", intFont);
charFont[i]= Convert.ToChar(intFont);
//Console.WriteLine( "charFont[{0}] is : {1}\n ", i, charFont[i]);
}
strFont = " "; //let strFont null
for (i=0; i <charFont.Length; i++)
{
strFont += charFont[i];
}
strOutput=strEnd + strFont;
return strOutput;
}
}