⑴ qt如何對字元串進行md5加密,保存到文件,然後能讀取到解密到文件
#include<QCryptographicHash>
#include<QSettings>
#include<QDebug>
//generateMD5-Hash
QStringtest_string("ateststringforMD5hash");
QByteArraymd5_hash;
md5_hash=QCryptographicHash::hash(test_string.toUtf8(),QCryptographicHash::Md5);
QStringmd5hash_string=md5_hash.toHex();
qDebug()<<"MD5-Hash:"<<md5hash_string;
//writetomd5_hash.ini
QSettingsmd5writeFile(QString("md5_hash.ini"),QSettings::IniFormat);
md5writeFile.setValue(QLatin1String("MD5-Hash"),md5_hash);
md5writeFile.sync();
//readfrommd5_hash.ini
QSettingsmd5readFile(QString("md5_hash.ini"),QSettings::IniFormat);
md5readFile.sync();
if(true==md5readFile.contains("MD5-Hash")){
QByteArraymd5_array=md5readFile.value("MD5-Hash").toByteArray();
qDebug()<<"MD5-Hashreadfromfile:"<<md5_array.toHex();
}
以上代碼純手敲並且Qt上驗證通過的,請珍惜使用。
⑵ Qt如何對sqlite資料庫進行加密
給SQLite資料庫加密解密的方法:
1、創建空的sqlite資料庫。
//資料庫名的後綴你可以直接指定,甚至沒有後綴都可以
//方法一:創建一個空sqlite資料庫,用IO的方式
FileStream fs = File.Create(「c:\\test.db「);
//方法二:用SQLiteConnection
SQLiteConnection.CreateFile(「c:\\test.db「);
創建的資料庫是個0位元組的文件。
2、創建加密的空sqlite資料庫
//創建一個密碼為password的空的sqlite資料庫
SQLiteConnection.CreateFile(「c:\\test2.db「);
SQLiteConnection cnn = new SQLiteConnection(「Data Source=c:\\test2.db「);
SQLiteConnection cnn = new SQLiteConnection(「Data Source=D:\\test2.db「);
cnn.Open();
cnn.ChangePassword(「password「);
3、給未加密的資料庫加密
SQLiteConnection cnn = new SQLiteConnection(「Data Source=c:\\test.db「);
cnn.Open();
cnn.ChangePassword(「password「);
4、打開加密sqlite資料庫
//方法一
SQLiteConnection cnn = new SQLiteConnection(「Data Source=c:\\test2.db「);
cnn.SetPassword(「password「);
cnn.Open();
//方法二
SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
builder.DataSource = @」c:\test.db「;
builder.Password = @」password「;
SQLiteConnection cnn = new SQLiteConnection(builder.ConnectionString);
cnn .Open();
除了用上述方法給SQLite資料庫加密以外,您還可以使用專業的文件加密軟體將SQLite資料庫加密。
超級加密 3000採用先進的加密演算法,使你的文件和文件夾加密後,真正的達到超高的加密強度,讓你的加密數據無懈可擊。
超級加密3000使用起來,只要點擊需要加密的文件的右鍵,即可輕松實現文件的加密。
解密只要雙擊已加密文件,輸入密碼即可輕松搞定。
⑶ Bitcoin-qt客戶端加密了,如何導入導出私鑰拜託各位大神
一、Bitcoin-qt客戶端加密後如需要導出某一地址對應的私鑰,需要先調用 walletpassphrase 密碼 解鎖持續時間(秒),如:walletpassphrase h123456789*/* 120,注意留有英文空格。phrase為短語的意思。 然後 mpprivkey 地址 如:mpprivkey (33位公鑰,字母區分大小寫、數混合字) 就可以得到諸如: (52位私鑰,字母區分大小寫、數字混合)二、Bitcoin-qt客戶端沒有加密如需要導出某一地址對應的私鑰,直接在RPC 控制台輸入mpprivkey 地址就可以。多多試幾個地址,你就可以知道,公鑰和私鑰都是成對使用的。一個公鑰對應一個私鑰。數據被Bitcoin-QT發送出去之前,需要兩層加密,第一層是隨機用某個公鑰對應的私鑰來加密數據,然後把這個公鑰明文發送給收款方。收款方使用這個公鑰打開對應私鑰加密的數據,這樣就可以確保數據是付款方發送。 第二層是用收款方的公鑰(其實就是33位的收款地址)來加密。經過這次加密後,只有掌握這個公鑰對應私鑰的人,才能收到這筆錢。猜測,Bitcoin 錢包文件wallet.dat裡面保存的應該是一對對的公鑰和私鑰。公鑰和私鑰一一對應。另外,可能出於安全性的考慮,Bitcoin-QT在加密錢包後是不能去掉密碼的。 如要去掉密碼,可以創建一個新錢包,然後把私鑰導入到新錢包里去。 使用命令:importprivkey 私鑰 私鑰導入後,Bitcoin-QT會在「接收」窗口自動顯示對應的地址(公鑰)。而如果這個地址有BTC余額,那就恭喜你了,別人的錢就歸你了。所以你可知道保護錢包文件wallet.dat的重要性了吧?加密錢包後,向別人發送(付款)BTC時,會被要求輸入加密密碼,這樣安全性上多了一道保障。 查看原帖>>
⑷ 比特幣基礎教學之:怎樣保護你的私鑰
私鑰安全問題的重要性對比特幣玩家來說不言而喻。對於比特幣的重量級玩家或者比特幣商家而言,如何保護好私鑰更是需要仔細考慮和反復斟酌的。今天編者就和大家探討一下如何保護比特幣私鑰的問題。對於bitcoin-qt客戶端來說,比特幣私鑰一般儲存在客戶端的wallet.dat文件中。對於Blockchain這樣的在線錢包用戶來說,比特幣私鑰是儲存在在線錢包的網路伺服器上,用戶也可以將私鑰下載到本地。對於紙錢包的用戶來說,私鑰可以被列印出來。但是,怎樣保護私鑰的安全性呢?編者列出了幾種方法供大家參考。
用對稱加密的方法保管私鑰 對稱加密(Symmetric-key algorithm)是指加密和解密都用一個密鑰。我們平時用到的加密方法一般都是對稱加密,比如 winrar 中的加密,bitcoin-qt中對私鑰文件的加密也是用的對稱型加密演算法。常用的對稱加密演算法有:AES、DES、RC4、RC5等等。對稱加密需要用戶設置相對比較復雜的密鑰,以防止被暴力破解。Go to top方法一,用bitcoin-qt對私鑰錢包進行加密。我們在命令模式下可以用encryptwallet命令來對錢包進行加密。命令模式的使用方法可以參見比特幣基礎教學之:怎樣使用紙錢包私鑰。這是私鑰加密的最簡易有效的方法。但是在使用walletpassphrase命令進行解密錢包時,密鑰會被讀入計算機內存中,所以存在攻擊者獲取密鑰的可能性。加密命令: encryptwallet YOURPASSWORD解密錢包命令: walletpassphrase YOURPASSWORDTIMEOUT更改密碼命令: walletpassphrasechange OLDPASSWORDNEWPASSWORDGo to top方法二,使用blockchain提供的AES加密。Blockchain為用戶提供基於AES演算法的私鑰文件加密服務。用戶可以將加密好的文件下載下來,並妥善保存。
Go to top方法三,用第三方軟體Truecrypt對密鑰文件加密,這也是編者比較推薦的方法。Truecrypt開源免費,軟體成熟度很高,而且支持雙因素認證和整個硬碟加密。另外,FBI人員在Truecrypt上面吃過虧,因此口碑很不錯。Truecrypt的口碑FBI hackers fail to crack TrueCrypt The FBI has admitted defeat in attempts to break the open source encryption used to secure hard drives seized by Brazilian police ring a 2008 investigation.
The Bureau had been called in by the Brazilian authorities after the country』s own National Institute of Criminology (INC) had been unable to crack the passphrases used to secure the drives by suspect banker, Daniel Dantas.Brazilian reports state that two programs were used to encrypt the drives, one of which was the popular and widely-used free open source program TrueCrypt. Experts in both countries apparently spent months trying to discover the passphrases using a dictionary attack, a technique that involves trying out large numbers of possible character combinations until the correct sequence is found.
完整文章點擊這里Truecrypt只支持對稱加密演算法。使用它的用戶必須要將密鑰牢記,如果你忘記密鑰,那麼沒有人能夠恢復你加密的文件。
Truecrypt官方網站Truecrypt使用文檔 用非對稱加密的方法保管私鑰 非對稱加密方法所採用公鑰和私鑰的形式來對文件進行加密。用戶可以用公鑰來對文件進行加密,用私鑰對文件解密。常見的非對稱加密演算法有RSA、Elgamal、ECC等等。非對稱加密的好處是密鑰的復雜度一般很高,可以很有效的防止被暴力破解。缺點是有一定的使用門檻,不太適合普通級用戶。Go to top 方法一、個人用戶可以考慮使用RSA來進行加密。首先,可以創建公鑰和私鑰,點擊這里生成密鑰。將公鑰私鑰妥善保管後,便可以用公鑰加密和私鑰解密了,點擊這里進行加密和解密。RSA公鑰和私鑰的產生過程RSA公鑰和私鑰的產生過程隨意選擇兩個大的素數p和q,p不等於q,計算N=pq。根據歐拉函數,求得r= φ(N) = φ(p)φ(q) = (p-1)(q-1)選擇一個小於r的整數e,求得e關於模r的模反元素,命名為d。(模反元素存在,當且僅當e與r互質)將p和q的記錄銷毀。(N,e)是公鑰,(N,d)是私鑰。Go to top方法二、比較成熟的非對稱加密軟體有我們可以採用PGP(Pretty Good Privacy)工具來對文件進行加密。PGP加密可以讓每個公鑰邦定到一個用戶的所有信息。相比RSA來講,PGP的功能更加完善可靠。但是隨著PGP的升級,新的加密消息有可能不被舊的PGP系統解密,所以用戶在使用PGP之前應該首先熟悉PGP的設置。PGP加密工具網上有很多,編者就不列舉了。
wiki中關於PGP的介紹PGP在線加解密系統PGP命令FAQ 高級方法保管私鑰 上述保管私鑰的方式都很常見,有經驗的攻擊者依然可能得到用戶的私鑰文件。關於更加高級隱秘的私鑰保管方式,參見以後的比特幣高級教學內容。