定長加密演算法
你好:
剛剛幫你查了下,所有的帖子,項目例子表示:
目前了解的經典加密(如對稱加密DES,AES,非對稱加密RSA)雖然可逆,但結果長度都是不定的,除非是 固定長度字元串轉固定長度密文
B. 有什麼演算法把一個字元串加密為固定長度並可以解密
將任意長度字元串加密成定長字元串是可能的,但逆向解密是不可能的。 可以加密為可變長度的字元串再解密,或者也可以將一定長度范圍內的字元串加密為定長字元串並解密。
C. 求一個易語言的位元組集加密演算法,最好是類似MD5這種能把任意長度的位元組集加密成固定長度的密文的。當然
MD5
不可能直接解密的
不存在一種可逆的演算法(能加密和加密)能把不同的明文加密成固定長度的密文
D. 固定長度加密演算法
private static void EncryptData(String inName, String outName, byte[] desKey, byte[] desIV)
{
//Create the file streams to handle the input and output files.
FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
fout.SetLength(0);
//Create variables to help with read and write.
byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
long rdlen = 0; //This is the total number of bytes written.
long totlen = fin.Length; //This is the total length of the input file.
int len; //This is the number of bytes to be written at a time.
DES des = new DESCryptoServiceProvider();
CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);
Console.WriteLine("Encrypting...");
//Read from the input file, then encrypt and write to the output file.
while(rdlen < totlen)
{
len = fin.Read(bin, 0, 100);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
Console.WriteLine("{0} bytes processed", rdlen);
}
encStream.Close();
fout.Close();
fin.Close();
}
E. md5加密以後的字元串長度
加密後為128位(bit),按照16進制(4位一個16進制數)編碼後,就成了32個字元。MD5並不是加密演算法,而是摘要演算法。加密演算法是可逆的,摘要演算法是理專論上不可逆的,詳細步驟:
1、md5演算法主要應用在密碼領域,為了防止明文傳輸密碼的危險性,一般會用密碼的md5值來代替密碼本身。
F. 如何實現定長數字串加密演算法
3DES(Triple DES):是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高; RC2和 RC4:用變長密鑰對大量數據進行加密,比 DES 快; IDEA(International Data Encryption Algorithm)國際數據加密演算法,使用 128 位密鑰提供非常強的安全性; RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件快的長度也是可變的; DSA(Digital Signature Algorithm):數字簽名演算法,是一種標準的 DSS(數字簽名標准); AES(Advanced Encryption Standard):高級加密標准,是下一代的加密演算法標准,速度快,安全級別高,目前 AES 標準的一個實現是 Rijndael 演算法; BLOWFISH,它使用變長的密鑰,長度可達448位,運行速度很快; 其它演算法,如ElGamal、Deffie-Hellman、新型橢圓曲線演算法ECC等。
G. 求一款優秀的c#加密解密演算法 ,最好是定長密文
你一點分都捨不得給啊?我倒是准備發給你的.
加解密怎麼沒有啊!就是一個演算法啊
給你吧!!!!
using System;
class Chedn
{
static void Main()
{
int i;
Boolean sw;
char[] chen = new char[10];
Console.WriteLine("*******************歡迎使用*******************");
for (i = 0; i < chen.Length; i++)
{
Console.WriteLine("請輸入第{0}個數:", i + 1);
chen[i] = char.Parse(Console.ReadLine());
if ((chen[i] >= '0') && (chen[i] <= '9'))
{
}
else
{
sw = false;
Console.WriteLine("您的輸入有誤!");
break;
}
}
int m = 9;
int n = 0;
for (int a = 0; a < chen.Length / 2; a++)
{
char z = chen[m];
chen[m] = chen[n];
chen[n] = z;
m--;
n++;
}
for (i = 0; i < chen.Length; i++)
{
int pen = chen[i] + 17;
switch (pen)
{
case 'A':
chen[i] = 'A';
break;
case 'B':
chen[i] = 'B';
break;
case 'C':
chen[i] = 'C';
break;
case 'D':
chen[i] = 'D';
break;
case 'E':
chen[i] = 'E';
break;
case 'F':
chen[i] = 'F';
break;
case 'G':
chen[i] = 'G';
break;
case 'H':
chen[i] = 'H';
break;
case 'I':
chen[i] = 'I';
break;
case 'J':
chen[i] = 'J';
break;
}
} Console.Write("加密後為:");
foreach (char pen in chen)
{
Console.Write(pen+" ");
}
Console.Write("\n");
int x = 9; //解密
int y= 0;
for (int a = 0; a < 5; a++)
{
char z = chen[x];
chen[x] = chen[y];
chen[y] = z;
x--;
y++;
}
Console.Write("解密後為:");
for (i = 0; i < chen.Length; i++)
{
int hhh = chen[i] - 17;
switch (hhh)
{
case '0':
chen[i] = '0';
break;
case '1':
chen[i] = '1';
break;
case '2':
chen[i] = '2';
break;
case '3':
chen[i] = '3';
break;
case '4':
chen[i] = '4';
break;
case '5':
chen[i] = '5';
break;
case '6':
chen[i] = '6';
break;
case '7':
chen[i] = '7';
break;
case '8':
chen[i] = '8';
break;
case '9':
chen[i] = '9';
break;
}
}
foreach (char pen in chen)
{
Console.Write(pen+" ");
}
Console.Write("\n");
Console.ReadLine();
}
}
看了行不行都還是說一下啊,有問題再改進!!!
H. MD5加密 32位加密比16位安全嗎
MD5
是
定長
加密
利用矩陣等演算法計算
具體演算法可以在網上查到各種語言的代碼
不算很長
按照理論來說
是不可逆的運算
據說
有人已經找出了它的逆運算
破解率也比較高
但是掌握這種技術的人還很少
目前來說MD5還是很廣泛的應用各種行業
比如金融和軍事
I. php純數字加密為可逆的定長密文
你這不是md5加密嗎,sql直接寫就行了。
你在資料庫工具中執行一下,select md5(1);
或者php的md5函數
echo md5(1);
php自帶可逆的加密是base64_encode和base64_decode,但是這個不是等長的,根據輸入的內容變換長度。估計這個不適合你。
你還是網路」php加密解密「吧,有現成的函數。
J. 有關字元加密演算法的問題!
MD5不是加密用的.
當對一個串進行MD5的時候,最後得到的總是一個定長的數據塊(32位元組),
而且不能通過計算後的數據解密得到原始數據.
所以不可能給你想要的結果.
真正的加密演算法是可以加密任何長度的數據,
因為最後解密要還原最初的數據,既不能多也不能少.
所以你可以找任何一個加密演算法都可以,比如DES , RSA.
如果願意, 你也可以定義自己的加密演算法.
比如:
#defineM_LEN12//分組長度為12的加密解密演算法
//加密,解密函數
voidencrypt(char*data,intnLen,constcharkey[M_LEN])
{
//簡單通過按位元組xor加密
for(inti=0;i<nLen;++i)
{
data[i]^=key[i%M_LEN];
}
}
intmain()
{
chardata[]="abcdefghijklmnopqrstuvwxyz";
intdataLen=strlen(data);
constchar*key="njagrdijmdff";//字元數量等於M_LEN
encrypt(data,dataLen,key);//加密
//此時data變成加密後的數據,和原來數據等長
encrypt(data,dataLen,key);//解密,在這個簡單加密解密演算法里,加密和解密的函數是用同一個
//此時data還原為原來的數據
printf("%s",data);
return0;
}