導航:首頁 > 文檔加密 > 知道密碼怎麼加密字元串

知道密碼怎麼加密字元串

發布時間:2022-07-11 22:00:39

㈠ 如何對文本/字元串加密解密

加密解密的演算法都沒錯,錯的是解密程序里的文件操作方法。rewind(fp)沒有必要。因為fp已經被close了。一般不推薦同時對一個文件又讀又寫,因為這樣會導致很多緩沖區同步的問題。比如:fputc()和getc()之間,必須要調用fflush(fp);即使這樣,還是會有問題。比如回車,getc()可能會返回兩個字元,\n和\a。但是用fputc()寫入的時候,分別寫入\n和\a會把第二行第一個字元覆蓋掉。正確的做法是:先把解密的數據保存到字元串里,全部結束之後,一次性把解密完的字元串寫到文件里去。voidmain(){charch,name[30];charcontent[1000];intn=0;FILE*fp;printf("name:\a");gets(name);fp=fopen(name,"r+");if(fp==NULL){printf("Nofile:%s!\n\a",name);return;}ch=getc(fp);while(ch!=EOF){if((isalpha(ch))!=0){if((ch>='a'&&ch='A'&&ch<='D'))ch=ch+22;elsech=ch-4;}content[n++]=ch;ch=getc(fp);//ch=getc(fp);}content[n]=0;rewind(fp);fprintf(fp,"%s",content);fclose(fp);printf("%sok\a\n",name);printf("content:%s\n",content);printf("\n");}

㈡ 加密解密字元串的演算法原理

我們經常需要一種措施來保護我們的數據,防止被一些懷有不良用心的人所看到或者破壞。在信息時代,信息可以幫助團體或個人,使他們受益,同樣,信息也可以用來對他們構成威脅,造成破壞。在競爭激烈的大公司中,工業間諜經常會獲取對方的情報。因此,在客觀上就需要一種強有力的安全措施來保護機密數據不被竊取或篡改。數據加密與解密從宏觀上講是非常簡單的,很容易理解。加密與解密的一些方法是非常直接的,很容易掌握,可以很方便的對機密數據進行加密和解密。

一:數據加密方法

在傳統上,我們有幾種方法來加密數據流。所有這些方法都可以用軟體很容易的實現,但是當我們只知道密文的時候,是不容易破譯這些加密演算法的(當同時有原文和密文時,破譯加密演算法雖然也不是很容易,但已經是可能的了)。最好的加密演算法對系統性能幾乎沒有影響,並且還可以帶來其他內在的優點。例如,大家都知道的pkzip,它既壓縮數據又加密數據。又如,dbms的一些軟體包總是包含一些加密方法以使復制文件這一功能對一些敏感數據是無效的,或者需要用戶的密碼。所有這些加密演算法都要有高效的加密和解密能力。

幸運的是,在所有的加密演算法中最簡單的一種就是「置換表」演算法,這種演算法也能很好達到加密的需要。每一個數據段(總是一個位元組)對應著「置換表」中的一個偏移量,偏移量所對應的值就輸出成為加密後的文件。加密程序和解密程序都需要一個這樣的「置換表」。事實上,80x86 cpu系列就有一個指令『xlat』在硬體級來完成這樣的工作。這種加密演算法比較簡單,加密解密速度都很快,但是一旦這個「置換表」被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密演算法對於黑客破譯來講是相當直接的,只要找到一個「置換表」就可以了。這種方法在計算機出現之前就已經被廣泛的使用。

對這種「置換表」方式的一個改進就是使用2個或者更多的「置換表」,這些表都是基於數據流中位元組的位置的,或者基於數據流本身。這時,破譯變的更加困難,因為黑客必須正確的做幾次變換。通過使用更多的「置換表」,並且按偽隨機的方式使用每個表,這種改進的加密方法已經變的很難破譯。比如,我們可以對所有的偶數位置的數據使用a表,對所有的奇數位置使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。

與使用「置換表」相類似,「變換數據位置」也在計算機加密中使用。但是,這需要更多的執行時間。從輸入中讀入明文放到一個buffer中,再在buffer中對他們重排序,然後按這個順序再輸出。解密程序按相反的順序還原數據。這種方法總是和一些別的加密演算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個詞,變換起字母的順序,slient 可以變為listen,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經變化了。

但是,還有一種更好的加密演算法,只有計算機可以做,就是字/位元組循環移位和xor操作。如果我們把一個字或位元組在一個數據流內做循環移位,使用多個或變化的方向(左移或右移),就可以迅速的產生一個加密的數據流。這種方法是很好的,破譯它就更加困難!而且,更進一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機的方法,這涉及到要產生一系列的數字,我們可以使用fibbonaci數列。對數列所產生的數做模運算(例如模3),得到一個結果,然後循環移位這個結果的次數,將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數列這種偽隨機的方式所產生的密碼對我們的解密程序來講是非常容易的。

在一些情況下,我們想能夠知道數據是否已經被篡改了或被破壞了,這時就需要產生一些校驗碼,並且把這些校驗碼插入到數據流中。這樣做對數據的防偽與程序本身都是有好處的。但是感染計算機程序的病毒才不會在意這些數據或程序是否加過密,是否有數字簽名。所以,加密程序在每次load到內存要開始執行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應該保密的,因為病毒程序的編寫者將會利用這些來破壞別人的程序或數據。因此,在一些反病毒或殺病毒軟體中一定要使用加密技術。

循環冗餘校驗是一種典型的校驗數據的方法。對於每一個數據塊,它使用位循環移位和xor操作來產生一個16位或32位的校驗和 ,這使得丟失一位或兩個位的錯誤一定會導致校驗和出錯。這種方式很久以來就應用於文件的傳輸,例如 xmodem-crc。 這是方法已經成為標准,而且有詳細的文檔。但是,基於標准crc演算法的一種修改演算法對於發現加密數據塊中的錯誤和文件是否被病毒感染是很有效的。

二.基於公鑰的加密演算法

一個好的加密演算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,並用它來加密明文,不同的密碼或密鑰產生不同的密文。這又分為兩種方式:對稱密鑰演算法和非對稱密鑰演算法。所謂對稱密鑰演算法就是加密解密都使用相同的密鑰,非對稱密鑰演算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密演算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數學理論上講,幾乎沒有真正不可逆的演算法存在。例如,對於一個輸入『a』執行一個操作得到結果『b』,那麼我們可以基於『b』,做一個相對應的操作,導出輸入『a』。在一些情況下,對於每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數為0)。對於一個沒有定義的操作來講,基於加密演算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密演算法,找到那個唯一的密鑰,唯一的方法只能是反復的試驗,而這需要大量的處理時間。

rsa加密演算法使用了兩個非常大的素數來產生公鑰和私鑰。即使從一個公鑰中通過因數分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至於在現實上是不可行的。加密演算法本身也是很慢的,這使得使用rsa演算法加密大量的數據變的有些不可行。這就使得一些現實中加密演算法都基於rsa加密演算法。pgp演算法(以及大多數基於rsa演算法的加密方法)使用公鑰來加密一個對稱加密演算法的密鑰,然後再利用一個快速的對稱加密演算法來加密數據。這個對稱演算法的密鑰是隨機產生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。

我們舉一個例子:假定現在要加密一些數據使用密鑰『12345』。利用rsa公鑰,使用rsa演算法加密這個密鑰『12345』,並把它放在要加密的數據的前面(可能後面跟著一個分割符或文件長度,以區分數據和密鑰),然後,使用對稱加密演算法加密正文,使用的密鑰就是『12345』。當對方收到時,解密程序找到加密過的密鑰,並利用rsa私鑰解密出來,然後再確定出數據的開始位置,利用密鑰『12345』來解密數據。這樣就使得一個可靠的經過高效加密的數據安全地傳輸和解密。

一些簡單的基於rsa演算法的加密演算法可在下面的站點找到:

ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa

三.一個嶄新的多步加密演算法

現在又出現了一種新的加密演算法,據說是幾乎不可能被破譯的。這個演算法在1998年6月1日才正式公布的。下面詳細的介紹這個演算法:

使用一系列的數字(比如說128位密鑰),來產生一個可重復的但高度隨機化的偽隨機的數字的序列。一次使用256個表項,使用隨機數序列來產生密碼轉表,如下所示:

把256個隨機數放在一個距陣中,然後對他們進行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產生一個表,隨意排序的表,表中的數字在0到255之間。如果不是很明白如何來做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來做的。現在,產生了一個具體的256位元組的表。讓這個隨機數產生器接著來產生這個表中的其餘的數,以至於每個表是不同的。下一步,使用"shotgun technique"技術來產生解碼表。基本上說,如果 a映射到b,那麼b一定可以映射到a,所以b[a[n]] = n.(n是一個在0到255之間的數)。在一個循環中賦值,使用一個256位元組的解碼表它對應於我們剛才在上一步產生的256位元組的加密表。

使用這個方法,已經可以產生這樣的一個表,表的順序是隨機,所以產生這256個位元組的隨機數使用的是二次偽隨機,使用了兩個額外的16位的密碼.現在,已經有了兩張轉換表,基本的加密解密是如下這樣工作的。前一個位元組密文是這個256位元組的表的索引。或者,為了提高加密效果,可以使用多餘8位的值,甚至使用校驗和或者crc演算法來產生索引位元組。假定這個表是256*256的數組,將會是下面的樣子:

crypto1 = a[crypto0][value]

變數'crypto1'是加密後的數據,'crypto0'是前一個加密數據(或著是前面幾個加密數據的一個函數值)。很自然的,第一個數據需要一個「種子」,這個「種子」 是我們必須記住的。如果使用256*256的表,這樣做將會增加密文的長度。或者,可以使用你產生出隨機數序列所用的密碼,也可能是它的crc校驗和。順便提及的是曾作過這樣一個測試: 使用16個位元組來產生表的索引,以128位的密鑰作為這16個位元組的初始的"種子"。然後,在產生出這些隨機數的表之後,就可以用來加密數據,速度達到每秒鍾100k個位元組。一定要保證在加密與解密時都使用加密的值作為表的索引,而且這兩次一定要匹配。

加密時所產生的偽隨機序列是很隨意的,可以設計成想要的任何序列。沒有關於這個隨機序列的詳細的信息,解密密文是不現實的。例如:一些ascii碼的序列,如「eeeeeeee"可能被轉化成一些隨機的沒有任何意義的亂碼,每一個位元組都依賴於其前一個位元組的密文,而不是實際的值。對於任一個單個的字元的這種變換來說,隱藏了加密數據的有效的真正的長度。

如果確實不理解如何來產生一個隨機數序列,就考慮fibbonacci數列,使用2個雙字(64位)的數作為產生隨機數的種子,再加上第三個雙字來做xor操作。 這個演算法產生了一系列的隨機數。演算法如下:

unsigned long dw1, dw2, dw3, dwmask;

int i1;

unsigned long arandom[256];

dw1 = {seed #1};

dw2 = {seed #2};

dwmask = {seed #3};

// this gives you 3 32-bit "seeds", or 96 bits total

for(i1=0; i1 < 256; i1++)

{

dw3 = (dw1 + dw2) ^ dwmask;

arandom[i1] = dw3;

dw1 = dw2;

dw2 = dw3;

}

如果想產生一系列的隨機數字,比如說,在0和列表中所有的隨機數之間的一些數,就可以使用下面的方法:

int __cdecl mysortproc(void *p1, void *p2)

{

unsigned long **pp1 = (unsigned long **)p1;

unsigned long **pp2 = (unsigned long **)p2;

if(**pp1 < **pp2)

return(-1);

else if(**pp1 > *pp2)

return(1);

return(0);

}

...

int i1;

unsigned long *aprandom[256];

unsigned long arandom[256]; // same array as before, in this case

int aresult[256]; // results go here

for(i1=0; i1 < 256; i1++)

{

aprandom[i1] = arandom + i1;

}

// now sort it

qsort(aprandom, 256, sizeof(*aprandom), mysortproc);

// final step - offsets for pointers are placed into output array

for(i1=0; i1 < 256; i1++)

{

aresult[i1] = (int)(aprandom[i1] - arandom);

}

...

變數'aresult'中的值應該是一個排過序的唯一的一系列的整數的數組,整數的值的范圍均在0到255之間。這樣一個數組是非常有用的,例如:對一個位元組對位元組的轉換表,就可以很容易並且非常可靠的來產生一個短的密鑰(經常作為一些隨機數的種子)。這樣一個表還有其他的用處,比如說:來產生一個隨機的字元,計算機游戲中一個物體的隨機的位置等等。上面的例子就其本身而言並沒有構成一個加密演算法,只是加密演算法一個組成部分。

作為一個測試,開發了一個應用程序來測試上面所描述的加密演算法。程序本身都經過了幾次的優化和修改,來提高隨機數的真正的隨機性和防止會產生一些短的可重復的用於加密的隨機數。用這個程序來加密一個文件,破解這個文件可能會需要非常巨大的時間以至於在現實上是不可能的。

四.結論:

由於在現實生活中,我們要確保一些敏感的數據只能被有相應許可權的人看到,要確保信息在傳輸的過程中不會被篡改,截取,這就需要很多的安全系統大量的應用於政府、大公司以及個人系統。數據加密是肯定可以被破解的,但我們所想要的是一個特定時期的安全,也就是說,密文的破解應該是足夠的困難,在現實上是不可能的,尤其是短時間內。

㈢ C# 在本地存儲密碼字元串,怎麼加密

/// <summary>
/// DES加密字元串
/// </summary>
/// <param name="encryptString">待加密的字元串</param>
/// <param name="encryptKey">加密密鑰,要求為8位</param>
/// <returns>加密成功返回加密後的字元串,失敗返回源串</returns>
public static string Encode(string encryptString, string encryptKey)
{
encryptKey = Utils.GetSubString(encryptKey, 8, "");
encryptKey = encryptKey.PadRight(8, ' ');
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());

}

/// <summary>
/// DES解密字元串
/// </summary>
/// <param name="decryptString">待解密的字元串</param>
/// <param name="decryptKey">解密密鑰,要求為8位,和加密密鑰相同</param>
/// <returns>解密成功返回解密後的字元串,失敗返源串</returns>
public static string Decode(string decryptString, string decryptKey)
{
try
{
decryptKey = Utils.GetSubString(decryptKey, 8, "");
decryptKey = decryptKey.PadRight(8, ' ');
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();

MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return "";
}
}

㈣ c語言編寫的程序,在輸入密碼時,如何加密

加密和解密演算法是程序編制中的重要一環。試想,如果我們平時使用的騰訊QQ、支付寶支付密碼、今日頭條賬號密碼那麼輕易就被別人盜取的話,很多不可以預料的事情就會發生!

在現實生活中,我們遇到過太多QQ密碼被盜取的情況,有的朋友QQ被盜之後,騙子利用朋友間信任騙取錢財的事情屢見不鮮。支付寶也曾出現過支付寶賬戶被惡意盜取的事件,對用戶利益造成了嚴重損害!這些在技術上都指向了同一相關問題:軟體加密演算法的強壯程度。今天,小編利用C語言來簡單實現一種加密方法。下面是源代碼。

需要說明:程序利用了ascii碼值的按照一定規律變換實現加密,對於解密過程,則是加密的逆過程。下面是程序的運行結果。

4190閱讀
搜索
編程免費課程300節
初學編程100個代碼
java自學一般要學多久
5秒破解excel密碼
python必背100源代碼
40歲零基礎學編程

㈤ 【緊急求助】vb 根據密碼加密字元串

無論你的密碼是什麼,都是文字
文字就有ascii碼。
將他們的ascii 碼作為密碼進行加密。具體如下:
比如密碼是:123
對應的ascii碼
49 50 51
然後,用這個去加密數據,方法碼
定義byte類型變數
三個為一個輪回
比如將要加密的數據的其中某三個的byte指分別為
102 54 158
那麼,就分別用我們的49 50 51去加他們,得數如果大於255,則減去255

㈥ 字元密碼怎麼設置啊

設密碼有幾個要點就是:
1、密碼的位數不要短於6位,使用大寫字母和小寫字母、標點和數字的集合
2、不要以任何單詞、生日、數字、手機號做為密碼,這種太容易就能破解了,比如說生日吧,看似有8位,但我們一般都是出生在19XX的,一年只有12個月,一個月最多隻有31天,XXX,不要幾分鍾就可以試出來,還不需要程序來算了
3、密碼中的英文最好有大小之分
4、如果在程序允許的情況下,最好能加上英文半形的符號

5、不要用a、b、c等比較小順序的字母或數字開頭,因為用字典暴力破解的程序,一般都是從數字或英文字母排序開始算的,如果設為z的話,破解的機率就小很多
6、因為這種無規律性的密碼不好記憶,有種比較簡單的方法,比如說你的密碼是blueidea吧,首先加頭,在前面加一個$號,就成為了$blueidea,然後就是加尾,加上一個)號,就成了$blueidea)號了,這種還是不安全,我們再把中間的打亂,$ideablue),嘻嘻,還不錯,隨便把中間的某幾個改為大字字母吧,$IdeabLue),這種看起來差不多了„„等會,加上一兩上數字吧$I1de9ab9Lu8e20),這不就成為了一個非常安全的密碼了嗎,如果你覺得還不安全的話,可以把中間的字母打亂就OK了
7、一些程序或注冊入口對密碼設定的比較死,只能用數字和字母,那樣怎麼辦了,還是以剛才的來做實驗吧,先是blueidea,改大小寫bLUeIdEa,打亂EaIdbLUe,加數字E9aI4db2LU6e,OK,這就安全了
8、可以用一句話來設定密碼,比如說「好好學習,天天向上」吧,先取拼音的第一個字母,hhxxttxs,變h2x2ttxs,再變H2X2tTXs,再變tTXsH2X2,加個頭和尾,ItTXsH2X2O,一個密碼就成功了
9、如果認為這種方法比較麻煩的話,可以強記兩到三個比較復雜的密碼,用的時候把它們重新排序,比如說常用密碼為ItTXs和Lu8e20,組合ItTXsLu8e20,打散Lu8eItTXs20,新密碼誕生了
10、注意在自己的電腦中安全比較可靠的殺毒軟體,如果你的電腦里有木馬的話,再復雜的密碼也是沒有任何作用的,不要上不可信的網站,不要讓別人很容易的得到你的信息。這包括身份證號碼、電話號碼、社會安全號碼、您的手機號碼、您所居住的街道的名字,等等
11、最好只注冊那種用MD5演算法加密論壇,那樣管理員就無法知道你的密碼了,我見過很多論壇因為加密不好,被別人破了管理員密碼,最後把論壇用戶的QQ,信箱等等都破了。
12、定期更改密碼,比如說每個月的第一個星期五,也不用重新想,就是把密碼的排序改一下就行了,好記
13、不要所有的地方都用一個密碼,根據重要和非重要的原則來設定密碼,比如說我一般不是很重要的地方,都用111111來做密碼
14、最後一點就是,不要把自己的密碼寫在別人可以看到的地方,比如說筆記本,紙巾上等等,最好是強記在腦子里,不要在輸入密碼的時候讓別人看到,多練幾次,打快了,旁人自然就看不到了,更不能把自己的密碼告訴別人,這樣對自己對別人都是很不負責任的,保護好你的密碼,尊重自己

如何設置高強度密碼 ?

先了解一下破解密碼的方法(需要用軟體,你自己一個一個試密碼基本上沒有什麼可能成

功):

一個是暴力破解,比如說黑客可以在軟體上設定破解長度為6個字元(不成功再改長度),用所有字元(如數字,大小寫字母,標點符號,特殊符號)窮舉破解。這種方法優點是可以依次試出密碼所有的可能,只是時間上有長短。當然如果密碼強度高,即使以現在的雙核,也要破解上百年。下表是用雙核電腦暴力破解密碼要的時間。
數字密碼
6位 瞬間
8位163天
10位 348天
普通大小寫字母
6位 33分鍾
8位 62天
數字+大小寫字母
6位 一個半小時
8位 253天
數字+大小寫字母+標點
6位 22小時
8位 23年

第二種是用字典,就是說把比如兩萬個(或更多)英語單詞或短詞、把人們常用的姓名拼音、出生日期、及通過某種調查人們常用的密碼存到比如說TXT文件中,破解軟體依次使用這個文件中的各個單詞,它的優點是高效,但缺點就是無論你的字典有多大,但只要字典中沒有被破解的正確密碼是破不出來的。

還有一種是掩碼破解:知道密碼中的部分字元,用暴力破解或字典破解來破剩餘的部分
上面密碼破解過程中,如果用兩台電腦分段破解可以減少破解時間。

再說一下什麼是加密,比如MD5,是用一個函數將需要加密的「字元串」轉換成一個長度為128bit長的字元串,因為函數不可逆,所以即使你知道加密後的字元也不能推出原「字元串」。這種密文破解方法只有一個,就是我同樣用MD5方法,加密「暴力破解」所列出的所有字元,把它的結果與要破解的結果相比較,如果完全相同,那麼這就是密碼。現在流行的還有如AES。

先說一下不容易破解的密碼 密碼與用戶名相同(破解密碼的早想到了) 生日、身份證、英文單詞、英語短語(如imissyou,thankyou)姓名拼音作密碼22222、uuuuuu、123456、123321、opqrst(連續的字母) 單純的數字做密碼
由上面的表可以看出,密碼長度越長越好,最好不要少於10位,並且不要用純數字。

有的文章說英文、數字、特殊字元交錯的密碼很難破,那是不錯,可是我們生活中會有許多密碼你都來個Ucliw86,&*ls的確非常難破,但我想也不太好記。記紙上?那你的紙安全嗎?紙丟了你再想是吧?
最好先從長度下手,比如「haohaizi1234.」(共13位),從破解者的角度來說他不知道你使用的密碼多長。
如果是暴力破解一般會從6到9位開始破解,如果只是用「數字+大小寫字母」從表格中來看即使是8位也要253天,而且也根本不可能破解出來。因為上面那個密碼是13位,而且其中有「.」標點。只有破解者用「數字+大小寫字母+標點」來破解才有可能成功,可是13位的破解時間遠大於8位破解時間(23年)。
如果是從字典破解,在比較大的字典中,「1234」在字典中肯定有,「.」也肯定有,「hao」:「hai」「zi」,也可能會分別有。如果一個字典中只有這五個元素,那麼它們所有的組合可能是1!+2!+3!+4!+5!=153種可能。但是實際上來講,即使一個字典全部擁有這些元素,那麼這個字典一定是一個很巨大的字典,如果他想用字典中所有的元素重新排列合,(如果這個字典中有N個元素)那麼這個可能性就是N!+(N-1)!+(N-2)!+„+3!+2!+1!,是一個絕對的無窮大,使字典破解也成為了不可能。

比如說,你一般用密碼不用標點,那麼你可以在你所有的密碼前加一個@,這樣你很好記的,可是它不僅為你增加了一位,而且從破解者來說增加了一個「標點符號」破解時間高度增加。
為了避免如「hao」「hai」這樣的拼音可能會出現,那麼你可以這樣,比如說你的「haohaizi」你給自己一個規定,我取各個拼音的第一位+第二位+第三位(沒有則空)那麼就可以改為「hhzaaioi」那麼這個字元串的破解只可能通過暴力。
如果只用數字部分是很不安全的,可是如果是在其它各個部分再加上數字,那麼這個破解難度又增大許多比如「hhzaaioi12345」首先來說,前一部分「hhzaaioi」不可能用字典破解,那麼整體也不可能用字典破解了。只有暴力才可能成功,如果是暴力,破解者並不知道你的密碼有多少位,而且有知道你的密碼中都有什麼組合的,他可能會從6-9位開始,即使到了12位,13位,時間上,那是基本不可能了。
你可以把數字轉換成特殊符號1,2,3,4„分別轉換為!,@,#,$;或者用像形,1,2,3,4,„轉換為I,Z,M,A„比如你可以規定自己數字的最後一個用這個方法。
如果數字部分你不想用固定數字也有辦法,比如你給一個自己的日記加密,你可以把這個文件的修改時間作為你的密碼數字部分,如20070217,沒有密碼不可能打開你的文件,這樣使文件的修改時間固定在你自己修改文件的時間,所以你可以查看文件的修改時間,得知你的數字部分密碼,這樣對你的記憶沒有什麼負擔,當然,要在每次你修改文件的時候修改密碼,不然,你也要自己一個一個試上次可能的修改時間。有人可能說這個數字用字典很可能破解。的確不錯,但是加上你前面設置的字典不可能破解的字母,
使整體上不可能字典破解了。
你還可以給自己規定,在密碼中,我把字母部分的第一個字母大寫,這樣暴力破解中,只有增加一個大字字母才可能破解成功(事實上破解者並不知道你有用大寫),而你

給自己這個規定卻不會增加你的記憶負擔。
通過以上的規則,我們可以把「haohaizi1234.」轉換成「hhzaaioi123$.」(13位),強度已經非常非常高了。而且這些規則你自己定好,以後用起來就順手了,即使給別人一個你的密碼,他也不太可能推出你的規則及別的密碼(下個密碼你用huaihaizi再推出
來不就完了)
有人可能會問,那麼6位的銀行密碼安全嗎?(這個6位只是你用銀行卡或存摺時的6位,而網上銀行10位,16位,大小寫,都可以的),而且銀行的網路系統是專用的,除非銀行內部的人,通過國際inter網是沒辦法進入他們的專用網路的。網上銀行是通過密碼、證書、信息加密、CA認證等把關才能查詢,使用自己的資金的。
再談一下網上銀行,我用的是建行的「個人網上銀行專業版」,有兩個密碼一個證書或者usbkey,保證了交易的安全性(只要你不人為的透露出自己的密碼),如果你按照銀行給你的安全注意事項卻使用,那也是不可能有閃失的。也就是說,不是密碼不安
全,而是安全意識有時還達不到。 這些是對於密碼本身的強度來說的,可是對於此外還有要注意的地方。
大家最好不要用word本身的文件加密功能加密,如果破解默認加密格式,只要用一個軟體聯網後幾秒中就可以破解掉。如果要這種方式加密,也要選擇「高級」用RC4(128位)方式加密(這種方式加密強度高許多)。
用winrar加密也是一個很方便而有效的選擇,注意的是加密只有在對文件加密的時候才能添加密碼,對3.0以後的版本是用AES128加密的,破解難度比較大。
密碼強度再高,如果別人用記錄鍵盤的木馬盜號,也太危險了。首先,如果是網上論壇,QQ,網游的賬號,一定要先申請「密碼保護」,並且一定記清楚填寫的資料。一些賬號輸入密碼時可以用如123456你可以先輸入456再把游標移動到開頭再輸入123。
從理論上來說,所有的密碼即使只用暴力破解,也一定可以破解出來,只是時間問題,而且計算機的速度也越來越快。但是有一點,如果一個密碼的破解時間為100年那麼這個密碼也已經夠用了,我想100年以後,這個密碼你可能就不再用了。也就是說密碼的有一定的安全期限,比如說,你在一個銀行開一個賬戶,在你在把這個銀行賬戶注銷的時候,密碼也就無所謂了(只要你不把這個密碼用在下個銀行賬戶)。

㈦ 超長字元串如何加密

可以用DES或3DES加密,速度還是比較快的

㈧ 在程序中如何將字元串常量進行加密

首先,要對這個常量字元串進行加密。
然後,加密用的密碼(密鑰)需要進行特殊處理。
比如:要保護字元串123456,用密鑰13579進行加密。
密鑰13579的16進制數組形式為:{0x31, 0x33, 0x35, 0x37, 0x39, 0x00}
你可以對這個數組進行數據干擾。比如:高位亂填數據(因為你知道是3),低位都加/減某數值:
變為了:{ 0xA3, 0xF5, 0x67, 0xD9, 0x3A, 0x00 }
你在代碼中對每一位進行恢復:
*p &= 0x0F, *p |= 0x30, *p -= 0x02,如此得到你的原始密碼:13579;
反匯編看到的你的密鑰串為:0xA3, 0xF5, 0x67, 0xD9, 0x3A, 0x00。
不知道你思路的話,只能碰運氣猜啦。

在上面兩種干擾方法基礎上,你甚至還可以把高低位調換,這樣就又加了一層干擾信息。
別人想破解也得好好猜一會了。

閱讀全文

與知道密碼怎麼加密字元串相關的資料

熱點內容
程序員開頭 瀏覽:773
西夏pdf 瀏覽:223
coloros備份後的文件夾 瀏覽:124
linux源碼pdf 瀏覽:789
什麼app在微信小程序里看電視電影 瀏覽:110
伺服器dns地址fec0 瀏覽:327
化州用什麼app交社保 瀏覽:494
linuxvi怎麼打開 瀏覽:245
程序員的電視劇完整版資源 瀏覽:921
運行時間軸的腳本命令是哪個 瀏覽:620
怎麼部署rtx伺服器 瀏覽:899
手機qq怎麼壓縮視頻文件 瀏覽:530
魔獸釣魚起鉤演算法 瀏覽:474
安卓手機怎麼知道蘋果手機在哪裡 瀏覽:830
華為雲伺服器企業試用 瀏覽:109
CRYPTO加密是什麼 瀏覽:49
平安三號壓縮包 瀏覽:330
潘石屹老師編程 瀏覽:833
pdf轉轉換成圖片 瀏覽:472
下載解壓球游戲 瀏覽:831