本發明屬于計算機賬號密碼安全技術領域,特別涉及一種基于改良aes的個人密碼生成和管理方法。
背景技術:
隨著互聯網技術的日新月異,需要用戶登錄的網站和軟件也越來越多。許多用戶為了方便,將同一密碼應用于不同場景,甚至還將該密碼應用于事關財產安全的支付應用。這無疑給網絡黑客的“撞庫”破解提供了方便,也非常不利于用戶個人的信息和財產安全。
然而,一些用戶在不同的場景應用不同的密碼,同樣存在問題。在用戶的賬號和密碼數量不斷增加時,很難精確的記憶所有的賬號和密碼信息,同時,對于一些冷門的網站和應用,用戶往往在注冊之后就因長時間未登錄而遺忘密碼信息。
當然,目前存在一些解決這類問題的技術和方法。文獻“申請公布號是cn105897412a的中國發明專利”公開了一種網站密碼生成方法及裝置。該方法通過接收用戶輸入的自定義密鑰,網站信息,通過固定的加密方式自動生成網站密碼。該方法存在的問題是,沒有密碼管理部分,已加密的密碼無法存儲,每次登陸均需要運行加密程序,十分繁瑣;而且,該方法采用固定的加密方式,若用戶的自定義密鑰與加密方式泄漏,無異于泄漏了自身所有網站密碼,風險性大大增加。
技術實現要素:
為了克服現有密碼生成方法安全性差的不足,本發明提供一種基于改良aes的個人密碼生成和管理方法。該方法在自定義密鑰加密的基礎上,增加了密碼生成后的管理功能。在生成自定義密碼后,再次調用aes加密,與加密過程相反,存儲時將之前生成的密碼作為原碼,將用戶的原始密碼作為加密的密鑰,將密碼再次加密后存儲在本地,并加入驗證標志位。提取本地的密碼時,先接收用戶的原始密碼進行預解密操作,若驗證標志位與加密前相同,則密碼提取成功。提取成功的所有密碼明文顯示,并提供增、刪、改、查功能。在常用地登錄的用戶在加密時將自身的硬盤號、mac地址作為加密因子輸入。由于硬盤號、mac地址為用戶唯一憑證,其作為加密因子參與密碼的生成過程。另外,改良aes的行轉移及列混淆過程進一步提高了加密過程的安全性。
本發明解決其技術問題所采用的技術方案:一種基于改良aes的個人密碼生成和管理方法,其特點是包括以下步驟:
步驟一、接收用戶的初始密碼。
用戶輸入自設密碼,包含數字、字母和符號且長度不做限制。接收到用戶的輸入以后,密碼加密模塊將該密碼存入字符串中,作為加密的原碼等待被加密。
步驟二、接收密碼的應用場景。
用戶選擇接收密碼的應用場景,該應用場景是某一個網站、某一個軟件或者自己的某一個賬號。系統接收到用戶的輸入以后,將該應用場景轉化為字符串并作為加密因子,等待被構成密鑰。
步驟三、判斷是否需要讀取設備的唯一標識。
若用戶只有一臺常用終端,則將加入設備的唯一標識作為加密因子。若用戶擁有多臺終端,則不應該將加入設備唯一標識作為加密因子。
步驟四、生成16位的加密密鑰。
根據用戶選擇的應用場景和設備標識情況進行構造。若信息量剛好等于16位,則直接構造加密密鑰,若信息量大于或者小于16位,則以循環冗余迭代的方式構造16位的加密密鑰。
步驟五、改良的aes加密。
變更aes列混淆和行轉移方式,使得在用戶的初始密碼、密碼應用場景以及加密方式均泄漏時,保證生成的密碼具有安全性。
步驟六、接收用戶的密碼要求。
若有些場景不支持密碼粘貼,只能用戶手動輸入,則要求生成的密碼不能過長;若些場景不支持特殊符號作為密碼,則要求生成的密碼不能帶有符號。
步驟七、生成隨機密碼。
經過改良的aes加密算法加密過后,用戶的原密碼變為與加密因子相關的n個十六進制兩位數所組成的字符串。根據用戶的輸出要求,對上述字符串的循環冗余進行迭代,多對一映射,生成符合用戶要求的隨機密碼。
步驟八、密碼信息加密。
在保存用戶的密碼信息之前,將提取所有已經生成的隨機密碼和對應的加密信息,并將其作為改良的aes加密的原碼。新的16位加密密鑰的構成將有所改變:設備的唯一憑證依舊作為用戶的可選項,若用戶選擇了該項,則會在在加密文件中設置與解密相關的標志位;必選項則變成了用戶輸入的初始密碼。重復步驟一到步驟五。
步驟九、密碼信息存儲。
在密碼信息加密之后,在加密后的信息中添加2種標志位,驗證標志位和配置標志位。驗證標志位通過預解密驗證用戶輸入密碼是否正確;配置標志位標志用戶在加密時是否使用設備唯一標識作為加密因子。然后,將2種標志位以二進制的形式保存在本地。
密碼解密及查詢過程如下:
步驟十、讀取加密的二進制文件。
對存儲在本地的二進制文件進行讀取操作,保存為字符串形式。
步驟十一、驗證用戶的初始密碼。
接收用戶的初始密碼并進行預解密,若驗證標志位相同,則密碼合法;若驗證標志位不相同,提醒用戶重新輸入。
步驟十二、生成16位解密密鑰。
將初始密碼和可選的設備唯一標識,采用與加密過程相同的冗余迭代方式形成16位解密密鑰。
步驟十三、改良的aes解密。
進行與加密過程互為逆過程的aes解密操作。
步驟十四、用戶的增刪改查。
將得到解密后的密碼明文顯示,用戶對信息進行增加、刪除、更改和查詢。增加,即調用密碼加密過程,生成適用于新的應用場景下的密碼;刪除,即刪除那些用戶認為無用的或者不再符合應用要求的密碼信息;更改,即在同一應用場景下,重新生成位數、組成不同的新密碼;查詢,即以樹形文件列表的方式顯示出所有的密碼及其應用背景信息。
本發明的有益效果是:該方法在自定義密鑰加密的基礎上,增加了密碼生成后的管理功能。在生成自定義密碼后,再次調用aes加密,與加密過程相反,存儲時將之前生成的密碼作為原碼,將用戶的原始密碼作為加密的密鑰,將密碼再次加密后存儲在本地,并加入驗證標志位。提取本地的密碼時,先接收用戶的原始密碼進行預解密操作,若驗證標志位與加密前相同,則密碼提取成功。提取成功的所有密碼明文顯示,并提供增、刪、改、查功能。在常用地登錄的用戶在加密時將自身的硬盤號、mac地址作為加密因子輸入。由于硬盤號、mac地址為用戶唯一憑證,其作為加密因子參與密碼的生成過程。另外,改良aes的行轉移及列混淆過程進一步提高了加密過程的安全性。
下面結合附圖和具體實施方式對本發明作詳細說明。
附圖說明
圖1是本發明基于改良aes的個人密碼生成和管理方法的方框圖。
圖2是本發明方法實施例中密碼生成及存儲方法的流程圖。
圖3是本發明方法實施例中密碼解密及查詢方法的流程圖。
具體實施方式
參照圖1-3。本發明基于改良aes的個人密碼生成和管理方法具體步驟如下:
本發明方法包含兩個模塊:初始密碼驗證模塊和用戶賬號密碼管理模塊。
其中,初始密碼驗證模塊包括:初始密碼的讀取和驗證,設備唯一標識的讀取,加密密鑰的構成,加密文件的解析。
用戶賬號密碼管理模塊包括:用戶賬號密碼的導入和導出,已生成密碼的查詢和刪除,根據用戶應用場景和要求生成新的隨機密碼。
密碼生成及存儲過程具體如下:
步驟一、接收用戶的初始密碼。
該過程為用戶個人輸入,密碼一般為自己的常用密碼,可以包含數字,字母,符號且長度不做限制。接收到用戶的輸入以后,密碼加密模塊將該密碼存入字符串中,作為加密的原碼等待被加密。
步驟二、接收密碼的應用場景。
該過程為用戶人為選擇,應用場景可以是某一個網站,某一個軟件或者自己的某一個賬號。系統接收到用戶的輸入以后,將該應用場景轉化為字符串并作為加密因子,等待被構成密鑰。
步驟三、判斷是否需要讀取設備的唯一標識。
該過程為用戶自選,選擇的原則為:若用戶只有一臺常用終端,則加入設備的唯一標識作為加密因子可以大大提高密碼的安全性。即使黑客竊取了用戶的初始密碼且破解了該加密方式,也會因為無法偽造設備唯一標識而解密失敗;相反,若用戶擁有多臺終端,為了實現加密密碼的一致性,不應該加入設備唯一標識作為加密因子。
步驟四、生成16位的加密密鑰。
根據用戶選擇的應用場景,設備標識的情況來進行構造。若信息量剛好等于16位,則直接構造密鑰,若信息量大于或者小于16位,則以循環冗余迭代的方式構造16位的密鑰。
步驟五、改良的aes加密。
aes算法一直以其簡單,安全的優點被廣泛應用。但是,由于其算法的開源,使得在密鑰泄漏的情況下信息安全變得岌岌可危。本方法通過變更了aes列混淆和行轉移的方式,使得在用戶的初始密碼,密碼應用場景,加密方式均泄漏的極限條件下,依舊可以保證生成的密碼具有良好的安全性。
步驟六、接收用戶的密碼要求。
由于密碼的應用場景不同,用戶對密碼的要求也會有所不同。例如:有些場景不支持密碼粘貼,只能用戶手動輸入,這種環境要求生成的密碼不能過長;還有些場景不支持特殊符號作為密碼,這就要求生成的密碼不能帶有符號。為了應對以上情況,本發明支持用戶選擇生成密碼的位數和構成成分。
步驟七、生成隨機密碼。
經過改良的aes加密算法加密過后,用戶的原密碼已經成為了與加密因子相關的n個十六進制兩位數所組成的字符串。根據用戶的輸出要求,本發明通過對上述字符串的循環冗余迭代,多對一映射,可以生成符合用戶要求的隨機密碼。值得一提的是,由于本方法采用的是多對一的映射,即在知曉了用戶的隨機密碼,應用環境的情況下,也無法通過反向解密來重構出用戶的初始密碼,進一步提高了用戶信息的安全性。
步驟八、密碼信息加密。
在保存用戶的密碼信息之前,本發明將提取所有已經生成的隨機密碼和對應的加密信息,并將其作為改良的aes加密的原碼。新的16位加密密鑰的構成將有所改變:設備的唯一憑證依舊作為用戶的可選項,若用戶選擇了該項,則會在在加密文件中設置與解密相關的標志位;必選項則變成了用戶輸入的初始密碼。之后進行重復步驟一到步驟五。
步驟九、密碼信息存儲。
在密碼信息加密之后,本方法將在加密后的信息中添加2種標志位,驗證標志位:通過預解密可以驗證用戶輸入密碼的正確與否;配置標志位:標志用戶在加密時是否使用設備唯一標識作為加密因子。然后,將該文件以二進制的形式保存在本地。
密碼解密及查詢過程具體如下:
步驟十、讀取加密的二進制文件。
在解密之前,需要對加密過的文件進行按位讀取,并保存為字符串形式。通過對加密過程的分析,文件中的驗證標志位和配置標志位需要進行特殊分析。
步驟十一、驗證用戶的初始密碼。
為保證安全性,本發明在解密之前需要驗證一次用戶的初始密碼。與現有技術不同的是該密碼驗證并不是簡單的字符串比對,由加密過程可知,本發明沒有明文保存用戶的密碼信息,而是在加密文件中預設了驗證標志位。用戶在輸入密碼后,本發明將進行一次預解密,若解密的標志位與加密前相同,則密碼輸入合法;反之,提醒用戶重新輸入。
步驟十二、生成16位解密密鑰。
在aes算法中,必須保證加密密鑰和解密密鑰的一致性。所以,與加密對應的,用戶輸入的合法的初始密碼即為解密密鑰的必選項;通過對加密文件配置標志位的分析,可以確定是否將設備唯一標識作為加密因子。而且,解密密鑰也必須采用與加密過程相同的循環冗余迭代方式,這樣才能保證密鑰的一致性。
步驟十三、改良的aes解密。
與加密過程互為逆過程。相應的,解密過程中的列混淆和行轉移方式要與加密過程對應,以保證數據的正確性。
步驟十四、用戶的增刪改查。
在得到解密后的信息后,用戶可以對信息進行增加、刪除、更改和查詢。增加:調用密碼加密過程,生成適用于新的應用場景下的密碼;刪除:刪除那些用戶認為無用的或者不再符合應用要求的密碼信息;更改:在同一應用場景下,重新生成位數、組成不同的新密碼,主要應用于密碼泄露的情況;查詢:以樹形文件列表的方式顯示出所有的密碼及其應用背景信息。