题目:加密/解密的算法或方法
这是MSDN的信息。
forumID=e2798a59-79d5-4833-9c57-87d46a8b907a
各位有没有好的想法,或贴一个给我好好(给点一眼看不出来的哟,二眼就无所谓了)。
(那种是人都可以看出来的(如 把A-->95再编码等)。。嘿嘿!!)

解决方案 »

  1.   

    e2798a59-79d5-4833-9c57-87d46a8b907a 
    这个好像是GUID啊
      

  2.   


    恩 就是guidA-->95
    Encoding.GetBytes("A")[0].ToString();
      

  3.   

    Encoding.Defaule.GetBytes("A")[0].ToString();
      

  4.   

    也像是哟,
    正题: 有没有方法(算法)加密/解密
    如 aaa123 ------加密------>ffewcsd5511fe6f4
      ffewcsd5511fe6f4------解密------>aaa123
    什么的吗
      

  5.   


    //加密
    public string TripleDESEcrypt(string plainString,string key)
    {
    if(plainString.Equals(string.Empty))
    {
    return plainString;
    }
    TripleDESCryptoServiceProvider tdes=new TripleDESCryptoServiceProvider();
    PasswordDeriveBytes derive = new PasswordDeriveBytes(key,null);
    byte[] tdesIV=new byte[8];
    byte[] btaKey=derive.CryptDeriveKey("TripleDES","SHA1",0,tdesIV);
    byte[] btaCode=Encoding.Unicode.GetBytes(plainString);
    tdes.Mode = CipherMode.ECB;
    MemoryStream ms=new MemoryStream();
    CryptoStream encStream = new CryptoStream(ms,tdes.CreateEncryptor(btaKey,tdesIV),CryptoStreamMode.Write);
    encStream.Write(btaCode, 0, btaCode.Length);
    encStream.FlushFinalBlock();
    encStream.Close();
    return System.Convert.ToBase64String(ms.ToArray());
    }
    //解密
    public string TripleDESDecrypt(string encryptedString,string key)
    {
    if(encryptedString.Equals(string.Empty))
    {
    return encryptedString;
    }
    TripleDESCryptoServiceProvider tdes=new TripleDESCryptoServiceProvider(); PasswordDeriveBytes derive = new PasswordDeriveBytes(key,null);
    byte[] tdesIV=new byte[8];
    byte[] btaKey=derive.CryptDeriveKey("TripleDES","SHA1",0,tdesIV); byte[] btaCode=System.Convert.FromBase64String(encryptedString); tdes.Mode = CipherMode.ECB;
    MemoryStream ms=new MemoryStream(btaCode); CryptoStream encStream = new CryptoStream(ms,tdes.CreateDecryptor(btaKey,tdesIV),CryptoStreamMode.Read);
    StreamReader sr=new StreamReader(encStream,System.Text.Encoding.Unicode);
    string strtmp=sr.ReadToEnd();
    sr.Close();
    encStream.Close(); return strtmp;
    return Encoding.Unicode.GetString(ms.ToArray());
    }
      

  6.   

    我发的两个方法你自己试一下吧.一个是加密的一个是解密的.第一个参数是要(加密/解密)的字符串
    第二个参数是key(key自己写一个如:"123")
      

  7.   


    谢谢,试了一下,OKOKOK的
    原理是什么。。哈哈
      

  8.   

    原理你把那段代码里涉及到的几个类研究一下.看下msdn就明白了.
      

  9.   

    9楼的,你的解密程序为什么最后要用2个return呢? 请教
      

  10.   


    汗..不好意思.其实第一个return下边有好几行注释,我回贴的时候删注释少删了一行-_-!
    第二个return没用.删掉
    public string TripleDESDecrypt(string encryptedString,string key)
            {
                if(encryptedString.Equals(string.Empty))
                {
                    return encryptedString;
                }
                TripleDESCryptoServiceProvider tdes=new TripleDESCryptoServiceProvider();            PasswordDeriveBytes derive = new PasswordDeriveBytes(key,null);
                byte[] tdesIV=new byte[8];
                byte[] btaKey=derive.CryptDeriveKey("TripleDES","SHA1",0,tdesIV);            byte[] btaCode=System.Convert.FromBase64String(encryptedString);            tdes.Mode = CipherMode.ECB;
                MemoryStream ms=new MemoryStream(btaCode);            CryptoStream encStream = new CryptoStream(ms,tdes.CreateDecryptor(btaKey,tdesIV),CryptoStreamMode.Read);
                StreamReader sr=new StreamReader(encStream,System.Text.Encoding.Unicode);
                string strtmp=sr.ReadToEnd();
                sr.Close();
                encStream.Close();            return strtmp;
            }
      

  11.   

    要一眼看不出?直接用Base64算了。
      

  12.   

    Quote=引用 9 楼 lovehongyun 的回复:]
    C# code//加密
    public string TripleDESEcrypt(string plainString,string key)
            {
                if(plainString.Equals(string.Empty))
                {
                    return plainString;
            ……
    [/Quote]  byte[] btaKey=derive.CryptDeriveKey("TripleDES","SHA1",0,tdesIV);
    此处红色的代码为什么使用“TripleDES”?
    如下代码为什么不使用(“Aes”,"SHA1",tdesIV)就执行报错:对象标识符(OID)未知。
    那么AES的算法名(标识符)不是"AES",又是神马呢?(AES亦不对)
    //加密
    public string TripleDESEcrypt(string plainString,string key)
            {
                if(plainString.Equals(string.Empty))
                {
                    return plainString;
                }
                AesCryptoServiceProvider acsp = new AesCryptoServiceProvider();            PasswordDeriveBytes derive = new PasswordDeriveBytes(key,null);
                byte[] tdesIV=new byte[16];
                byte[] btaKey=derive.CryptDeriveKey("Aes","SHA1",0,tdesIV);            byte[] btaCode=Encoding.Unicode.GetBytes(plainString);
                acsp.Mode = CipherMode.ECB;
                MemoryStream ms=new MemoryStream();            
                CryptoStream encStream = new CryptoStream(ms,acsp.CreateEncryptor(btaKey,tdesIV),CryptoStreamMode.Write);
                encStream.Write(btaCode, 0, btaCode.Length);
                encStream.FlushFinalBlock();
                encStream.Close();
                return System.Convert.ToBase64String(ms.ToArray());
            }
    [
      

  13.   

    ……
    [/Quote]Very Very Sorry,改正:
    如下代码为什么不使用(“Aes”,"SHA1",tdesIV)就执行报错:对象标识符(OID)未知。
    应该是:如下代码为什么使用(“Aes”,"SHA1",tdesIV)就执行报错:对象标识符(OID)未知。