可以用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和DSADSACryptoServiceProvider 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); }
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;
}
}
godgreat给的第一种答案应当说与我要的关系不是很大。我要的是你认证过后的后一过程。第二个答案,我没有去试,但感觉有可能不太行。对于中文字符或日文字符值加3?
希望能明白说明原理不过还是谢谢了!昨天自己写的,今天居然就可以了。
哈哈
godgreat给的第一种答案应当说与我要的关系不是很大。我要的是你认证过后的后一过程。第二个答案,我没有去试,但感觉有可能不太行。对于中文字符或日文字符值加3?
希望能明白说明原理不过还是谢谢了!昨天自己写的,今天居然就可以了。
哈哈