❶ C語言設計一個簡單的加密解密程序
C語言設計一個簡單的加密解密程序如下:
加密程序代碼:
#include<stdio.h>
main()
{
char c,filename[20];
FILE *fp1,*fp2;
printf("請輸入待加密的文件名:\n");
scanf("%s",filename);
fp1=fopen(filename,"r");
fp2=fopen("miwen.txt","w");
do
{
c=fgetc(fp1);
if(c>=32&&c<=126)
{
c=c-32;
c=126-c;
}
if(c!=-1)
fprintf(fp2,"%c",c);
}
while(c!=-1);
}
解密程序代碼:
#include<stdio.h>
#include<string.h>
main()
{
char c,filename[20];
char yanzhengma[20];
FILE *fp1,*fp2;
printf("請輸入待解密文件名:\n");
scanf("%s",filename);
printf("請輸入驗證碼:\n");
scanf("%s",yanzhengma);
if(strcmp(yanzhengma,"shan")==0)
{
fp1=fopen(filename,"r");
fp2=fopen("yuanwen.txt","w");
do
{
c=fgetc(fp1);
if(c>=32&&c<=126)
{
c=126-c;
c=32+c;
}
if(c!=-1)
fprintf(fp2,"%c",c);
}
while(c!=-1);
}
else
{
printf("驗證碼錯誤!請重新輸入:\n");
scanf("%s",filename);
}
}
❷ 手機不用第三方軟體怎麼加密應用程序
可參考vivo手機設置軟體加密的方法:
1、iQOO (Monster) UI/Funtouch OS 3.0及以上系統:進入設置--指紋、面部與密碼 /指紋與密碼/安全--隱私與應用加密,設置隱私密碼密保,設置「密碼」「密保」完成後點擊「應用加密」,打開軟體後面對應的開關,即可加密;
2、Funtouch OS 3.0以下系統:進入i管家--軟體管理--軟體鎖,設置圖案密碼或使用數字密碼,設置完成後,點擊右上角的「繼續」,設置完成軟體密碼,即可設置軟體鎖的密保(即安全問題),然後點擊右上角的「完成」,點擊軟體後面對應的鎖狀圖標,即可加密。
❸ windows7 bitlocker 相關
Windows BitLocker驅動器加密是一種全新的安全功能,該功能通過加密Windows操作系統卷上存儲的所有數據可以更好地保護計算機中的數據。
受信任的平台模塊(TPM)是一個內置在計算機中的微晶元。它用於存儲加密信息,如加密密鑰。存儲在TPM上的信息會更安全,避免受到外部軟體攻擊和物理盜竊。
BitLocker使用TPM幫助保護Windows操作系統和用戶數據,並幫助確保計算機即使在無人參與、丟失或被盜的情況下也不會被篡改。
BitLocker還可以在沒有TPM的情況下使用。若要在計算機上使用BitLocker而不使用TPM,則必須通過使用組策略更改BitLocker安裝向導的默認行為,或通過使用腳本配置BitLocker。使用BitLocker而不使用TPM時,所需加密密鑰存儲在USB快閃記憶體驅動器中,必須提供該驅動器才能解鎖存儲在卷上的數據。
[編輯本段]工作原理
通過加密整個Windows操作系統卷保護數據。
如果計算機安裝了兼容TPM,BitLocker將使用TPM鎖定保護數據的加密密鑰。因此,在TPM已驗證計算機的狀態之後,才能訪問這些密鑰。加密整個卷可以保護所有數據,包括操作系統本身、Windows注冊表、臨時文件以及休眠文件。因為解密數據所需的密鑰保持由TPM鎖定,因此攻擊者無法通過只是取出硬碟並將其安裝在另一台計算機上來讀取數據。
在啟動過程中,TPM將釋放密鑰,該密鑰僅在將重要操作系統配置值的一個哈希值與一個先前所拍攝的快照進行比較之後解鎖加密分區。這將驗證Windows啟動過程的完整性。如果TPM檢測到Windows安裝已被篡改,則不會釋放密鑰。
默認情況下,BitLocker安裝向導配置為與TPM無縫使用。管理員可以使用組策略或腳本啟用其他功能和選項。
為了增強安全性,可以將TPM與用戶輸入的PIN或存儲在USB快閃記憶體驅動器上的啟動密鑰組合使用。
在不帶有兼容TPM的計算機上,BitLocker可以提供加密,而不提供使用TPM鎖定密鑰的其他安全。在這種情況下,用戶需要創建一個存儲在USB快閃記憶體驅動器上的啟動密鑰。
[編輯本段]TPM
TPM是一個微晶元,設計用於提供基本安全性相關功能,主要涉及加密密鑰。TPM通常安裝在台式計算機或者攜帶型計算機的主板上,通過硬體匯流排與系統其餘部分通信。
合並了TPM的計算機能夠創建加密密鑰並對其進行加密,以便只可以由TPM解密。此過程通常稱作「覆蓋」或「綁定」密鑰,可以幫助避免泄露密鑰。每個TPM有一個主覆蓋密鑰,稱為「存儲根密鑰(SRK)」,它存儲在TPM的內部。在TPM中創建的密鑰的隱私部分從不暴露給其他組件、軟體、進程或者人員。
合並了TPM的計算機還可以創建一個密鑰,該密鑰不僅被覆蓋,而且還被連接到特定硬體或軟體條件。這稱為「密封」密鑰。首次創建密封密鑰時,TPM將記錄配置值和文件哈希的快照。僅在這些當前系統值與快照中的值相匹配時才「解封」或釋放密封密鑰。BitLocker使用密封密鑰檢測對Windows操作系統完整性的攻擊。
使用TPM,密鑰對的隱私部分在操作系統控制的內存之外單獨保存。因為TPM使用自身的內部固件和邏輯電路來處理指令,所以它不依賴於操作系統,也不會受外部軟體漏洞的影響。
[編輯本段]BitLocker驅動器加密的機制
首先需要強調的是,並不是所有的Windows Vista版本都支持BitLocker驅動器加密,相應的功能只有Windows Vista 的Enterprise版和Ultimate版才能夠實現。其目標即是讓Windows Vista用戶擺脫因 PC 硬體丟失、被盜或不當的淘汰處理而導致由數據失竊或泄漏構成的威脅,
BitLocker保護的 Windows Vista 計算機的日常使用對用戶來說是完全透明的。在具體實現方面,BitLocker主要通過兩個主要子功能,完整的驅動器加密和對早期引導組件的完整性檢查,及二者的結合來增強數據保護。其中:
驅動器加密能夠有效地防止未經授權的用戶破壞 Windows Vista文件以及系統對已丟失或被盜計算機的防護,通過加密整個 Windows 卷來實現。利用 BitLocker,所有用戶和系統文件都可加密,包括交換和休眠文件。
對早期引導組件進行完整性檢查有助於確保只有在這些組件看起來未受干擾時才執行數據解密,還可確保加密的驅動器位於原始計算機中。通過 BitLocker,還可選擇鎖定正常的引導過程,直至用戶提供 PIN(類似於 ATM 卡 PIN)或插入含有密鑰資料的 USB 快閃記憶體驅動器為止。這些附加的安全措施可實現多因素驗證,並確保在提供正確的 PIN 或 USB 快閃記憶體驅動器之前計算機不會從休眠狀態中啟動或恢復。
BitLocker 緊密集成於 Windows Vista 中,為企業提供了無縫、安全和易於管理的數據保護解決方案。例如,BitLocker 可選擇利用企業現有的 Active Directory 域服務基礎結構來遠程委託恢復密鑰。BitLocker 還具備一個與早期引導組件相集成的災難恢復控制台,以供用於「實地」數據檢索。
[編輯本段]工作過程
BitLocker主要有兩種工作模式:TPM模式和U盤模式,為了實現更高程度的安全,我們還可以同時啟用這兩種模式。
要使用TPM模式,要求計算機中必須具備不低於1.2版TPM晶元,這種晶元是通過硬體提供的,一般只出現在對安全性要求較高的商用電腦或工作站上,家用電腦或普通的商用電腦通常不會提供。
要想知道電腦是否有TPM晶元,可以運行「devmgmt.msc」打開設備管理器,然後看看設備管理器中是否存在一個叫做「安全設備」的節點,該節點下是否有「受信任的平台模塊」這類的設備,並確定其版本即可。
如果要使用U盤模式,則需要電腦上有USB介面,計算機的BIOS支持在開機的時候訪問USB設備(能夠流暢運行Windows Vista的計算機基本上都應該具備這樣的功能),並且需要有一個專用的U盤(U盤只是用於保存密鑰文件,容量不用太大,但是質量一定要好)。使用U盤模式後,用於解密系統盤的密鑰文件會被保存在U盤上,每次重啟動系統的時候必須在開機之前將U盤連接到計算機上。
受信任的平台模塊是實現TPM模式BitLocker的前提條件。
對硬碟分區的要求
硬體滿足上述要求後,還要確保硬碟分區的安排可以滿足要求。通常情況下,我們可能習慣這樣給硬碟分區:首先,在第一塊硬碟上劃分一個活動主分區,用於安裝Windows,這個分區是系統盤;其次,對於剩下的空間繼續劃分更多主分區,或者創建一個擴展分區,然後在上面創建邏輯驅動器。簡單來說,我們已經習慣於讓第一塊硬碟的第一個分區成為系統盤,並在上面安裝Windows。
傳統方式下的硬碟分區情況。
在一台安裝Windows Vista的計算機上運行「diskmgmt.msc」後即可看到硬碟分區情況。
這里重點需要關注的是,硬碟上是否有超過一個的活動分區。如果該磁碟上有兩個分區,對應的盤符分別是「C」和「D」,其中「C」就是第一塊硬碟上的第一個分區,屬於系統盤而且是活動的。但問題在於,如果除了系統盤外,硬碟上不存在其他活動分區,這種情況下是無法直接啟用BitLocker的(無論是TPM模式還是U盤模式)。原因很簡單,源於其工作原理,BitLocker功能實際上就是將操作系統或者機密數據所在的硬碟分區進行加密,在啟動系統的時候,我們必須提供解密的密鑰,來解密原本被加密的文件,這樣才能啟動操作系統或者讀取機密文件。但這就有一個問題,用於解密的密鑰可以保存在TPM晶元或者U盤中,但是解密程序應該放在哪裡?難道就放在系統盤嗎?可是系統盤已經被加密了,這就導致了一種很矛盾的狀態:因為用於解密的程序被加密了,因此無法運行,導致無法解密文件。
所以如果要順利使用BitLocker功能,硬碟上必須至少有兩個活動分區,除了系統盤外,額外的活動分區必須保持未加密狀態(且必須是NTFS文件系統),同時可用空間不能少於1.5GB。為了保證可靠性,這個專門的活動分區最好專用,不要在上面保存其他文件或者安裝額外的操作系統。
遺憾的是,一般情況下,很少有人會在自己的硬碟上創建多個活動分區。那麼我們又該怎樣設置硬碟,以滿足BitLocker的要求?如果是在安裝Windows Vista之前看到了這段內容,並且打算安裝好之後使用BitLocker功能,那麼我們可以在安裝的時候直接將分區准備好。
如果是在安裝了Windows Vista,並且在打算使用BitLocker的時候才看到這段內容,而硬碟分區已經按照傳統的方式劃分好了,那麼也不用擔心。通過一些方法,我們可以在不破壞現有系統以及所有數據的前提下為BitLocker騰出一部分空間來創建另一個分區。
如果還沒有安裝Vista
如果正打算在一塊新硬碟上安裝Windows Vista企業版或旗艦版,那麼就可以在安裝的過程中創建出符合BitLocker要求的分區結構。具體的過程如下:
准備好Windows Vista安裝光碟,並在計算機的BIOS設置中設定通過光碟引導計算機(具體的設置方法請參考計算機或主板的說明書);
打開電源,立刻將Windows Vista安裝光碟放入計算機。如果設置無誤,那麼計算機會自動從光碟引導,稍等片刻,屏幕上就會出現一個綠色的滾動條,就像Windows Vista正常啟動時候那樣;
當看到「安裝Windows」對話框之後,選擇要安裝的語言、時間和貨幣格式,以及鍵盤和輸入方法,設置好之後單擊「下一步」按鈕;
單擊窗口左下角的「修復安裝」鏈接;
隨後可以看到「系統恢復選項」對話框,因為這是一塊新硬碟,因此不會列出任何內容,直接單擊「下一步」按鈕;
在接下來看到的「系統恢復選項」對話框中,單擊「命令提示符」鏈接;
通過「命令提示符」創建符合要求的分區
當打開「命令提示行」窗口後,依次運行下面列出的命令(除了第一條和最後兩條命令外,其他所有命令都需要在「diskpart>」提示符下運行,括弧內的文字是對命令的解釋,不用輸入。):
Diskpart(啟動diskpart.exe,這是一個命令行界面下的硬碟分區調整程序。)
Select Disk 0(將第一塊硬碟選中,作為後續操作的目標盤。如果有多塊硬碟,並且希望將Windows Vista安裝到其他硬碟上,請更改數字「0」為目標硬碟的編號。如果想知道分別有哪些硬碟,各自的編號是什麼,請首先運行「list disk」命令。)
Clean(清空所選硬碟上的分區表信息。注意:目標硬碟上如果有數據,將被全部清除。)
Create Partition Primary Size=1500(創建一個體積為1.5GB的主分區,這個分區用於日後保存引導文件。)
Assign Letter=S(將這個1.5GB分區的盤符設置為「S」,或者其他任何想要使用的字母,但不建議使用「C」,畢竟很多人都習慣於將Windows安裝到C盤。)
Active(將這個1.5GB的分區設置為活動分區。)
Create Partition Primary(用所有剩餘空間創建一個主分區,如果希望除了這個主分區外還創建其他分區,請使用「size=xxx」參數指定這個主分區的大小。)
Assign Letter=C(將這個分區的盤符設置為「C」,接下來會將Windows安裝到這個分區,同時最終被BitLocker加密的也是這個分區。)
List Volume(查看已經分好的區,正常情況下可以看到劃分好的分區界面。)
Exit(退出Diskpart程序。)
Format C: /Y /Q /FS:NTFS(用NTFS文件系統快速格式化C盤。)
Format S: /Y /Q /FS:NTFS(用NTFS文件系統快速格式化S盤。)
經過上述設置,我們可以重新啟動計算機,並再次使用Windows Vista安裝光碟引導系統,完成操作系統的安裝工作。在安裝過程中需要注意,系統必須安裝到C盤,而不能安裝到S盤。
在命令提示行下創建好的分區
如果已經安裝了Vista
如果已經安裝好了Windows Vista旗艦版或企業版,並在打算啟用BitLocker的時候才發現系統被安裝到磁碟0分區1上,也不用擔心。只要分區0可用空間足夠,我們完全可以將其中一部分空間拆借出來,創建一個新的磁碟0分區1。
雖然有很多第三方軟體可以做到這一點,不過往往需要付費購買,而且因為在系統盤的前面添加了一個新的分區,導致盤符變化,可能會使得Windows無法正常啟動,因此不建議使用這類第三方軟體。
要想在保留現有數據的前提下給原本安裝了Windows的「磁碟0分區1」前面新建一個分區,我們可以使用微軟提供的一個免費軟體:BitLocker和EFS增強,這個軟體是作為Windows Vista Ultimate Extras提供的。顧名思義,該軟體只能由正版Windows Vista旗艦版用戶通過Windows Update獲得。不過根據微軟的說明,Windows Vista企業版用戶可以聯系微軟獲取該軟體,聯系方式是:http://support.microsoft.com/contactus/?ws=support。
安裝了BitLocker和EFS增強工具後,請這樣操作:
從「開始」菜單下的「所有程序」 「附件」 「系統工具」 「BitLocker」路徑下啟動「BitLocker驅動器准備工具」,在授權協議頁面上單擊「我接受」,隨後該軟體將自動檢查本機的配置情況。
閱讀屏幕上顯示的注意事項,按照提示照做後單擊「繼續」按鈕。
隨後程序會自動調整硬碟分區,整個過程分為三個步驟:縮小(壓縮)現有的系統盤;利用壓縮獲得的可用空間創建一個用於保存引導文件的新分區;然後根據BitLocker的要求調整新分區的設置。
這個過程大概需要三分鍾左右,完成後單擊「完成」按鈕,系統會自動重啟動。這時准備工作已經全部完成。通過上述操作,在本機會出現一個盤符為「S」,可用空間為1.5GB的新分區,引導文件和啟動過程中的臨時文件會保存在這里。
另外,在使用BitLocker和EFS增強工具調整硬碟分區的時候,還必須保證之前的系統盤在減少1.5GB的可用空間後保留的可用空間不小於分區總容量的10%。
默認情況下,Vista中只能使用TPM模式的BitLocker,因此要使用U盤模式,我們必須配置組策略將其啟用。好在支持BitLocker功能的Windows Vista版本都是具有組策略的。具體做法如下:
運行「gpedit.msc」打開組策略編輯器,從編輯器窗口左側的控制台樹形圖中定位到「計算機配置」 「管理模板」 「Windows組件」 「BitLocker驅動器加密」。
在右側的控制台窗口中找到並雙擊打開「控制面板設置:啟用高級啟動選項」這個策略,選擇「已啟用」。
單擊「確定」保存設置,這樣我們已經在本機啟用了U盤模式的BitLocker。
啟用BitLocker
在安裝SP1之後的Vista企業版和旗艦版中,我們可以使用三種模式的BitLocker:
●純TPM模式,要求系統中具有TPM晶元,這樣用於解密的密鑰以及用於驗證引導文件完整性的相關文件都會保存在TPM晶元中。
●純U盤模式,要求系統符合上文中提到的和USB設備有關的條件,這樣用於解密的密鑰會被保存在U盤中。
●混合模式,可以使用TPM+U盤,TPM+PIN,以及TPM+U盤+PIN的形式進一步增強系統安全。
那麼這些模式分別要怎樣使用?讓我們來看看。
純U盤模式
因為目前具有TPM晶元的電腦還不是很多,因此我們首先介紹純U盤模式的使用方法,畢竟這種方式才適合最多人使用。
打開控制面板,依次單擊「安全」 「BitLocker驅動器加密」,我們可以看到BitLocker加密驅動器的界面。
這里已經列出了當前安裝電腦的所有本地硬碟分區,對於想要加密的分區,單擊對應的「啟用BitLocker」鏈接,隨後可以看到設置啟動首選項的界面,在這里我們需要選擇BitLocker的工作方式。因為沒有TPM晶元,因此只能選擇最後一個選項,這樣以後每次啟動系統的時候都必須提供保存了密鑰的U盤,不過系統啟動後就不再需要了。因此在這里直接單擊「每一次啟動時要求啟動USB密鑰」選項。
選擇要使用的BitLocker工作模式。
將准備好的U盤連接到計算機,等程序界面上顯示了這個U盤後,單擊將其選中,然後單擊「保存」按鈕,這樣用於解密被BitLocker加密的分區所需的密鑰就會被保存在所選的U盤上。
隨後可以看到保存恢復密碼的界面,在這里我們需要決定恢復密碼的處理方式。需要注意,在平時的使用過程中,並不需要提供恢復密碼,我們只要提供之前一步操作中指定的U盤即可,而恢復密碼是在U盤不可用(例如,丟失或者損壞)時使用的,因此建議將其妥善處理。例如,如果本機安裝了列印機,可以將恢復密碼列印在紙上,並將這張紙保存在安全的地方。同時因為非常重要,建議同時保留恢復密碼的多個副本,例如多次列印,然後將列印的密碼分別保存在不同的安全位置,或者保存在另外的U盤上(最好不要將恢復密碼和啟動密碼保存在同一個U盤上)。
保管好恢復密碼後單擊「下一步」按鈕,隨後程序會對我們的操作進行一個概述。同時為了進一步確認本機可以正常使用BitLocker功能,請保持選中「運行BitLocker系統檢查」選項,這樣程序會在進行加密之前先對系統中的各項設置進行檢查。如果確認無誤,請單擊「繼續」按鈕(注意:在整個過程中,最先使用的U盤一定不能拔下來,如果需要將恢復密碼保存在其他U盤上,請將第二塊U盤連接到計算機的其他USB介面上)。
接下來需要重新啟動系統,准備好之後單擊「現在重啟動」按鈕。重啟動完成,並成功登錄後,桌面右下角會顯示一個氣泡圖標,提示我們系統正在進行加密,單擊這個氣泡圖標後可以看到顯示加密進度的對話框。在這里我們可以暫停加密操作,並在稍後繼續進行,但是無法停止或者撤銷加密操作。
加密操作需要一定的時間,主要取決於系統盤的大小以及計算機的硬體速度。不過好在這個操作只需要進行一次。而且在日後的使用過程中,系統的運行速度並不會有太大的降低,因此可以放心使用。加密完成後單擊「完成」按鈕即可。經過上述操作,BitLocker功能已經被成功啟用。但是還有幾點問題需要注意:
●應用BitLocker加密後,當Windows Vista啟動後,我們查看系統文件時將不會看到文件帶有任何與「加密」有關的屬性,這屬於正常現象,因為BitLocker的加密是在系統底層,從文件系統上實現的,而在用戶看來,啟動了的系統里的系統文件並沒有被加密。但如果換個角度來看,例如一台計算機上安裝了兩個系統,或者將裝有系統的硬碟拆掉,連接到其他計算機上,在試圖訪問應用了BitLocker的系統所在的分區時,我們會收到拒絕訪問的信息,而且拒絕的原因是目標分區沒有被格式化。這都屬於正常現象,而且也證明了BitLocker正在保護我們操作系統的安全(設想一下,連訪問分區都無法實現,又如何進行離線攻擊?)。
●另外,保存了啟動密鑰的U盤,直接在Windows資源管理器下查看的時候,完全看不到其中保存的密鑰文件。這也是為了安全。同時建議這個U盤只用於保存BitLocker的啟動密鑰,而不要用作其他用途。這主要是為了盡量避免U盤因為各種原因,例如病毒感染或者頻繁寫入損壞而造成系統無法訪問。而且需要注意,密鑰盤只是在啟動系統的時候需要,只要系統啟動完成,我們就可以將其拔出,並妥善保管起來。操作系統的正常運行過程中並不需要我們反復提供密鑰盤。
●最後一點,在加密過程中,系統盤的可用磁碟空間將會急劇減少。這屬於正常情況,因為這個過程中會產生大量臨時文件。加密完成後這些文件會被自動刪除,同時可用空間數量會恢復正常。在解密被加密的系統盤時也會遇到類似的情況。
在應用了U盤模式的BitLocker後,每次啟動系統前都必須將保存了啟動密鑰的U盤連接到計算機,否則系統會提示需要BitLocker驅動器加密密鑰。這就要求我們必須將保存了啟動密鑰的U盤連接到計算機後重啟動,才能完成Windows的啟動和載入過程。如果因為某些原因,例如保存了啟動密鑰的U盤損壞或者丟失,只要還保留有啟用BitLocker時創建的恢復密碼,那麼可以在這個界面上按下回車鍵進行恢復。
[編輯本段]BitLocker的技術特色
BitLocker支持「受信平台模塊(TPM : Trusted Platform Mole)」1.2及其後版本,可實現基於硬體的全盤加密,以增強數據保護,並確保運行 Windows Vista 的 PC 在系統離線時不被瀏覽與修改;BitLocker 使用128或256位的AES加密演算法。(甚至有傳言BitLocker將使用1024位加密,是否屬實有待考證);BitLocker可通過組策略設置;在系統中採用BitLocker驅動器加密對系統性能的影響很小,這是一個好消息;BitLocker密鑰可存儲在磁碟、USB盤,甚至可以列印出來。也可通過組策略自動生成並保存於Active Directory中;
❹ 怎樣可以把微信的小程序加密
1、下載MD5源文件(JS);
2、在小程序模塊中使用require引入外部模塊;也可以在index.html中直接全局引入md5.js文件。
因為源md5.js中沒有隊模塊因為輸出,如果使用require需要export,所以在md5.js中需要加入以下代碼:
mole.exports = {
hexMD5: hex_md5, //需要輸出的加密演算法,我這邊只寫了我需要得兩種
b64Md5: b64_md5,
}
在js文件中使用require引入md5:
const md5 = require('../../assets/js/md5/md5.js');
使用:
let b64 = md5.b64Md5(code); //code需要加密的數據
下面是我的文件結構:
md5.js 代碼如下;
/*
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase =
0;
/* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad =
"";
/* base-64 pad character. "=" for strict RFC compliance */
var chrsz =
8;
/* bits per input character. 8 - ASCII; 16 - Unicode */
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_md5(s){
return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){
return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s){
return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) {
return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) {
return binl2b64(core_hmac_md5(key, data)); }
function str_hmac_md5(key, data) {
return binl2str(core_hmac_md5(key, data)); }
/*
* Perform a simple self-test to see if the VM is working
*/
function md5_vm_test()
{
return hex_md5( "abc") ==
"";
}
/*
* Calculate the MD5 of an array of little-endian words, and a bit length
*/
function core_md5(x, len)
{
/* append padding */
x[len >>
5] |=
0x80 << ((len) %
32);
x[(((len +
64) >>>
9) <<
4) +
14] = len;
var a =
1732584193;
var b = - 271733879;
var c = - 1732584194;
var d =
271733878;
for( var i =
0; i < x.length; i +=
16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
a = md5_ff(a, b, c, d, x[i+
0],
7 , - 680876936);
d = md5_ff(d, a, b, c, x[i+
1],
12, - 389564586);
c = md5_ff(c, d, a, b, x[i+
2],
17,
606105819);
b = md5_ff(b, c, d, a, x[i+
3],
22, - 1044525330);
a = md5_ff(a, b, c, d, x[i+
4],
7 , - 176418897);
d = md5_ff(d, a, b, c, x[i+
5],
12,
1200080426);
c = md5_ff(c, d, a, b, x[i+
6],
17, - 1473231341);
b = md5_ff(b, c, d, a, x[i+
7],
22, - 45705983);
a = md5_ff(a, b, c, d, x[i+
8],
7 ,
1770035416);
d = md5_ff(d, a, b, c, x[i+
9],
12, - 1958414417);
c = md5_ff(c, d, a, b, x[i+ 10],
17, - 42063);
b = md5_ff(b, c, d, a, x[i+ 11],
22, - 1990404162);
a = md5_ff(a, b, c, d, x[i+ 12],
7 ,
1804603682);
d = md5_ff(d, a, b, c, x[i+ 13],
12, - 40341101);
c = md5_ff(c, d, a, b, x[i+ 14],
17, - 1502002290);
b = md5_ff(b, c, d, a, x[i+ 15],
22,
1236535329);
a = md5_gg(a, b, c, d, x[i+
1],
5 , - 165796510);
d = md5_gg(d, a, b, c, x[i+
6],
9 , - 1069501632);
c = md5_gg(c, d, a, b, x[i+ 11],
14,
643717713);
b = md5_gg(b, c, d, a, x[i+
0],
20, - 373897302);
a = md5_gg(a, b, c, d, x[i+
5],
5 , - 701558691);
d = md5_gg(d, a, b, c, x[i+ 10],
9 ,
38016083);
c = md5_gg(c, d, a, b, x[i+ 15],
14, - 660478335);
b = md5_gg(b, c, d, a, x[i+
4],
20, - 405537848);
a = md5_gg(a, b, c, d, x[i+
9],
5 ,
568446438);
d = md5_gg(d, a, b, c, x[i+ 14],
9 , - 1019803690);
c = md5_gg(c, d, a, b, x[i+
3],
14, - 187363961);
b = md5_gg(b, c, d, a, x[i+
8],
20,
1163531501);
a = md5_gg(a, b, c, d, x[i+ 13],
5 , - 1444681467);
d = md5_gg(d, a, b, c, x[i+
2],
9 , - 51403784);
c = md5_gg(c, d, a, b, x[i+
7],
14,
1735328473);
b = md5_gg(b, c, d, a, x[i+ 12],
20, - 1926607734);
a = md5_hh(a, b, c, d, x[i+
5],
4 , - 378558);
d = md5_hh(d, a, b, c, x[i+
8],
11, - 2022574463);
c = md5_hh(c, d, a, b, x[i+ 11],
16,
1839030562);
b = md5_hh(b, c, d, a, x[i+ 14],
23, - 35309556);
a = md5_hh(a, b, c, d, x[i+
1],
4 , - 1530992060);
d = md5_hh(d, a, b, c, x[i+
4],
11,
1272893353);
c = md5_hh(c, d, a, b, x[i+
7],
16, - 155497632);
b = md5_hh(b, c, d, a, x[i+ 10],
23, - 1094730640);
a = md5_hh(a, b, c, d, x[i+ 13],
4 ,
681279174);
d = md5_hh(d, a, b, c, x[i+
0],
11, - 358537222);
c = md5_hh(c, d, a, b, x[i+
3],
16, - 722521979);
b = md5_hh(b, c, d, a, x[i+
6],
23,
76029189);
a = md5_hh(a, b, c, d, x[i+
9],
4 , - 640364487);
d = md5_hh(d, a, b, c, x[i+ 12],
11, - 421815835);
c = md5_hh(c, d, a, b, x[i+ 15],
16,
530742520);
b = md5_hh(b, c, d, a, x[i+
2],
23, - 995338651);
a = md5_ii(a, b, c, d, x[i+
0],
6 , - 198630844);
d = md5_ii(d, a, b, c, x[i+
7],
10,
1126891415);
c = md5_ii(c, d, a, b, x[i+ 14],
15, - 1416354905);
b = md5_ii(b, c, d, a, x[i+
5],
21, - 57434055);
a = md5_ii(a, b, c, d, x[i+ 12],
6 ,
1700485571);
d = md5_ii(d, a, b, c, x[i+
3],
10, - 1894986606);
c = md5_ii(c, d, a, b, x[i+ 10],
15, - 1051523);
b = md5_ii(b, c, d, a, x[i+
1],
21, - 2054922799);
a = md5_ii(a, b, c, d, x[i+
8],
6 ,
1873313359);
d = md5_ii(d, a, b, c, x[i+ 15],
10, - 30611744);
c = md5_ii(c, d, a, b, x[i+
6],
15, - 1560198380);
b = md5_ii(b, c, d, a, x[i+ 13],
21,
1309151649);
a = md5_ii(a, b, c, d, x[i+
4],
6 , - 145523070);
d = md5_ii(d, a, b, c, x[i+ 11],
10, - 1120210379);
c = md5_ii(c, d, a, b, x[i+
2],
15,
718787259);
b = md5_ii(b, c, d, a, x[i+
9],
21, - 343485551);
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
}
return Array(a, b, c, d);
}
/*
* These functions implement the four basic operations the algorithm uses.
*/
function md5_cmn(q, a, b, x, s, t)
{
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}
/*
* Calculate the HMAC-MD5, of a key and some data
*/
function core_hmac_md5(key, data)
{
var bkey = str2binl(key);
if(bkey.length >
16) bkey = core_md5(bkey, key.length * chrsz);
var ipad = Array( 16), opad = Array( 16);
for( var i =
0; i <
16; i++)
{
ipad[i] = bkey[i] ^
0x36363636;
opad[i] = bkey[i] ^
0x5C5C5C5C;
}
var hash = core_md5(ipad.concat(str2binl(data)),
512 + data.length * chrsz);
return core_md5(opad.concat(hash),
512 +
128);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x &
0xFFFF) + (y &
0xFFFF);
var msw = (x >>
16) + (y >>
16) + (lsw >>
16);
return (msw <<
16) | (lsw &
0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function bit_rol(num, cnt)
{
return (num << cnt) | (num >>> ( 32 - cnt));
}
/*
* Convert a string to an array of little-endian words
* If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
*/
function str2binl(str)
{
var bin = Array();
var mask = ( 1 << chrsz) -
1;
for( var i =
0; i < str.length * chrsz; i += chrsz)
bin[i>> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i% 32);
return bin;
}
/*
* Convert an array of little-endian words to a string
*/
function binl2str(bin)
{
var str =
"";
var mask = ( 1 << chrsz) -
1;
for( var i =
0; i < bin.length *
32; i += chrsz)
str += String.fromCharCode((bin[i>> 5] >>> (i %
32)) & mask);
return str;
}
/*
* Convert an array of little-endian words to a hex string.
*/
function binl2hex(binarray)
{
var hex_tab = hexcase ?
"0123456789ABCDEF" :
"0123456789abcdef";
var str =
"";
for( var i =
0; i < binarray.length *
4; i++)
{
str += hex_tab.charAt((binarray[i>> 2] >> ((i% 4)* 8+ 4)) &
0xF) +
hex_tab.charAt((binarray[i>> 2] >> ((i% 4)* 8 )) &
0xF);
}
return str;
}
/*
* Convert an array of little-endian words to a base-64 string
*/
function binl2b64(binarray)
{
var tab =
"+/";
var str =
"";
for( var i =
0; i < binarray.length *
4; i +=
3)
{
var triplet = (((binarray[i >>
2] >>
8 * ( i % 4)) &
0xFF) <<
16)
| (((binarray[i+ 1 >>
2] >>
8 * ((i+ 1)% 4)) &
0xFF) <<
8 )
| ((binarray[i+ 2 >>
2] >>
8 * ((i+ 2)% 4)) &
0xFF);
for( var j =
0; j <
4; j++)
{
if(i *
8 + j *
6 > binarray.length *
32) str += b64pad;
else str += tab.charAt((triplet >>
6*( 3-j)) &
0x3F);
}
}
return str;
}
mole.exports = {
hexMD5: hex_md5,
b64Md5: b64_md5,
}
❺ 濟寧加密軟體都有哪些公司在做,有沒有聯系方式
確實有這么個公司,貌似華途是當今中國第一的加密軟體,濟寧的好像也有代理的。
❻ 我有個excel的文檔加密了,你能否幫我破解一下,你方便的話留一下你的聯系方式。方便聯系
您用什麼方法加密的,我建議您聯系這個加密方法的客服試試。
給文檔加密,我使用的是超級加密3000。
超級加密3000自帶的有密碼恢復功能,我建議您再加密文檔的時候可以試試。
❼ 手機程序加密怎麼設置
如果您使用的是華為手機,以華為P40手機為例:
一、啟用應用鎖
進入設置 > 安全 > 應用鎖 > 開啟,設置應用鎖密碼並選擇加鎖應用。
如果您已設置了人臉或指紋解鎖,還可以根據彈框提示將應用鎖關聯人臉或指紋,通過刷臉或指紋進入應用。
提示:並非所有產品支持指紋功能,請以實際情況為准。
二、啟用應用鎖智能保護功能
給私密應用設置應用鎖並關聯人臉後,手機將自動啟動應用鎖智能保護功能。當感知到人臉發生變化時(如他人使用等場景),已退出的應用會自動上鎖,再次打開需要重新驗證機主身份才能進入。此功能光線良好時體驗更佳。
請選擇以下任一方式給應用鎖關聯人臉,以啟用應用鎖智能保護功能:
1、若已為手機設置了人臉解鎖功能,可在開啟應用鎖的過程中,根據彈框提示關聯人臉,應用鎖智能保護功能將自動啟用。
2、若未給手機設置人臉解鎖功能,可進入設置 > 生物識別和密碼 > 人臉識別 ,根據提示進入人臉識別界面。然後開啟訪問應用鎖開關,關聯人臉與應用鎖。
三、更改應用鎖密碼或密保
進入應用鎖設置界面,點擊齒輪圖標 > 密碼類型,可重新選擇鎖屏密碼或自定義密碼來作為應用鎖密碼。
如果選擇了自定義密碼,可以繼續修改自定義密碼和自定義密碼保護。
四、取消或關閉應用鎖
進入 應用鎖設置界面,請執行以下任一操作:
1、取消應用鎖:在加鎖應用列表中,關閉需要取消應用鎖的應用尾部的開關。
2、關閉應用鎖:點擊齒輪圖標> 關閉應用鎖 > 重置。此操作會取消所有應用的應用鎖,同時清除應用鎖的所有數據。
❽ 電腦怎麼加密應用程序
高強度文件夾加密大師天空軟體站下載:htp://
www.skycn.com/soft/21155.html絕不是簡單的隱藏文件夾!!!這款文件加密軟體具有界面漂亮友好、簡單易用、穩定無錯、功能強大和兼容性好等特點。新增個性加密文件夾圖標設置功能。經它加密的文件夾可以移動到其他電腦上使用。而且支持臨時解密、瀏覽解密的功能,讓您不用每次都重新加密和關閉窗口後自動加密,方便快捷!並且它不受系統影響,即使重裝、Ghost還原、系統盤格式化,也依然可以照樣使用。它支持三種加密方式:「本機加密」、「移動加密」和「隱藏加密」。
其中的「移動加密」是本軟體原創的加密方式
,使用這種方式加密的文件夾可以隨意的移動到任何電腦上,包括未安裝本軟體的電腦上使用的加密方式安全性極高,達到了文件夾加密安全性的頂峰!使用任何工具都無法解開!值得一提的是它的加密速度極快,上百
G
的數據僅需1秒鍾完成。
沒有大小限制。使用了高強度的加密演算法,給文件夾加密碼..