(c#加密)血迹之术-不可破解的密码

首先这个是学习Msdn讲座的并非原创:- -但是分享下

不可破解的加密只要保证加密的key不泄露,就不会被破解(据讲课的大大说这是数学证明不可以破解的)

using System;
using System.Text;
using System.Security.Cryptography;

class OTP_XOR
{
    
static void Main(string[] args)
    
{
        Console.Write(
"Enter plaintext: ");
        StringBuilder plaintext 
= 
            
new StringBuilder(Console.ReadLine());
        
        RandomNumberGenerator rng 
= 
            
new RNGCryptoServiceProvider();
        
byte[] key = new Byte[plaintext.ToString().Length];
        

        
//--下面这里我修改了下,首先保证非0数据出现其次保证和原始数据相同咯- -看过原文的不要误会哈~~
        rng.GetNonZeroBytes(key);
        
         StringBuilder ciphertext 
= 
            EncryptDecrypt(plaintext, key);
        Console.WriteLine(
"ciphertext: {0}"
            ciphertext);

        StringBuilder recoveredplaintext 
= 
            EncryptDecrypt(ciphertext, key);
        Console.WriteLine(
"recovered plaintext: {0}",
            recoveredplaintext);

        Console.Read();
    }

    
    
/// <summary>
    
/// 加密函数-可以反复用-这个函数的幽默点就在--^这里由于[原始数据^随机加密数据^随机加密数据=原始数据]
    
/// </summary>
    
/// <param name="data_in"></param>
    
/// <param name="key"></param>
    
/// <returns></returns>

    static StringBuilder EncryptDecrypt(
        StringBuilder data_in, 
        
byte [] key)
    
{
        StringBuilder data_oput 
= 
            
new StringBuilder(data_in.ToString());
        
for (int index=0; index<data_in.Length; index++)
        
{
            
int character = 
                ((
int)data_in[index] ^ key[index]);
            data_oput[index] 
= (char)character;
        }

        
return data_oput;
    }

}


顺便这是我处猪的第一帖

不可破解的加密代码下载
posted @ 2007-04-23 21:36  苹果王子  阅读(960)  评论(2)    收藏  举报