(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;
    }
}
顺便这是我处猪的第一帖
不可破解的加密代码下载
不可破解的加密只要保证加密的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;
    }
}
顺便这是我处猪的第一帖
不可破解的加密代码下载
                    
                


    
                
            
        
浙公网安备 33010602011771号