qtrsa加密
❶ 如何使用Qt加密解密類庫 QCA
類庫與插件:crypto拷貝到:Qt安裝目錄\Desktop\Qt\4.7.4\mingw\plugins\crypto Qt feautre:feature拷貝到:Qt安裝目錄\Desktop\Qt\4.7.4\mingw\mkspecs\features 使用類庫時,需要: 1. 在你的Qt項目文件pro中添加"CONFIG += crypto" 2.
❷ 如何使用Qt加密解密類庫 QCA
下載:
類庫與插件:crypto拷貝到:Qt安裝目錄\Desktop\Qt\4.7.4\mingw\plugins\crypto
Qt feautre:feature拷貝到:Qt安裝目錄\Desktop\Qt\4.7.4\mingw\mkspecs\features
使用類庫時,需要:
1. 在你的Qt項目文件pro中添加"CONFIG += crypto"
2. 拷貝"OpenSSL-Win32\bin\"目錄下ssleay32.dll和libeay32.dll到你項目的debug或release目錄
3. 拷貝"qca-2.0.3\lib"目錄與"qca-ossl-2.0.0-beta3\lib"目錄下qca2.dll和qca-ossl2.dll到你項目的debug或release目錄
4. 在程序中使用QCA之前先使用語句QCA::Initializer init對QCA進行初始化
❸ 比特幣基礎教學之:怎樣保護你的私鑰
私鑰安全問題的重要性對比特幣玩家來說不言而喻。對於比特幣的重量級玩家或者比特幣商家而言,如何保護好私鑰更是需要仔細考慮和反復斟酌的。今天編者就和大家探討一下如何保護比特幣私鑰的問題。對於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 高級方法保管私鑰 上述保管私鑰的方式都很常見,有經驗的攻擊者依然可能得到用戶的私鑰文件。關於更加高級隱秘的私鑰保管方式,參見以後的比特幣高級教學內容。
❹ android rsa加解密私鑰和公鑰怎麼用
php服務端與客戶端交互、提供開放api時,通常需要對敏感的部分api數據傳輸進行數據加密,這時候rsa非對稱加密就能派上用處了,下面通過一個例子來說明如何用php來實現數據的加密解密 1、加密解密的第一步是生成公鑰、私鑰對,私鑰加密的內容能通過公鑰解密(反過來亦可以) 下載開源RSA密鑰生成工具openssl(通常Linux系統都自帶該程序),解壓縮至獨立的文件夾,進入其中的bin目錄,執行以下命令: openssl genrsa -out rsa_private_key.pem 1024 openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 第一條命令生成原始 RSA私鑰文件 rsa_private_key.pem,第二條命令將原始 RSA私鑰轉換為 pkcs8格式,第三條生成RSA公鑰 rsa_public_key.pem 從上面看出通過私鑰能生成對應的公鑰,因此我們將私鑰private_key.pem用在伺服器端,公鑰發放給android跟ios等前端 2、php中用生成的公鑰、私鑰進行加密解密,直接上代碼 <?php $private_key = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl / Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o2n1vP1D+tD3amHsK7QIDAQAB 2h5syHQ5qslPSGYJ1M/+herqxaVwWs6 /2VWc2T5MDmxLhAkEA3pwGpvXgLiWL /+x/gaq deJU//OTv1a3SqcCE1f+ oiq+Y8SgCCs73qixrU1YpJy9yKA/meG9smsl4Oh9IOIGI+zUygh9YdSmEq0CQQC2 / -----END RSA PRIVATE KEY-----'; $public_key = '-----BEGIN PUBLIC KEY----- //sR2tXw0wrC2DySx8vNGlqt 3Y7ldU9+ Bd6h4wrbbHA2XE1sq21ykja/Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o 2n1vP1D+tD3amHsK7QIDAQAB -----END PUBLIC KEY-----'; //echo $private_key; $pi_key = openssl_pkey_get_private($private_key);//這個函數可用來判斷私鑰是否是可用的,可用返回資源id Resource id $pu_key = openssl_pkey_get_public($public_key);//這個函數可用來判斷公鑰是否是可用的 print_r($pi_key);echo "\n"; print_r($pu_key);echo "\n"; $data = "aassssasssddd";//原始數據 $encrypted = ""; $decrypted = ""; echo "source data:",$data,"\n"; echo "private key encrypt:\n"; openssl_private_encrypt($data,$encrypted,$pi_key);//私鑰加密 $encrypted = base64_encode($encrypted);//加密後的內容通常含有特殊字元,需要編碼轉換下,在網路間通過url傳輸時要注意base64編碼是否是url安全的 echo $encrypted,"\n"; echo "public key decrypt:\n"; openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私鑰加密的內容通過公鑰可用解密出來 echo $decrypted,"\n"; echo "---------------------------------------\n"; echo "public key encrypt:\n"; openssl_public_encrypt($data,$encrypted,$pu_key);//公鑰加密 $encrypted = base64_encode($encrypted); echo $encrypted,"\n"; echo "private key decrypt:\n"; openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私鑰解密 echo $decrypted,"\n";
❺ 如何在IOS中使用RSA加密,能夠與.NET的伺服器互通
在 ios 上你需要使用證書加密。
首先生成一張證書。微軟的.Net framework SDK為我們提供了一個生成X.509數字證書的命令行工具Makecert.exe。
打開.Net的控制台,使用如下命令生成證書:
makecert -sr LocalMachine -ss My -n CN=Theoservice -sky exchange -pe
然後,開始->運行->MMC,打開MMC控制台。文件->添加/刪除管理單元->添加按鈕->選」證書」->添加->選」計算機賬戶」->關閉->確定,然後你就可以在 「個人->證書」 里看到剛才生成的證書了。證書採用1024位密鑰加密。現在,你需要做得就是導出這張證書。如果你的伺服器並不是本機,你首先需要導出一個帶私鑰的pfx格式的證書。導出時需要你填寫密碼來保護這張證書,然後將其導入到伺服器上就好了。此外,你還需要導出一份不帶私鑰的cer格式的證書。這張證書只含有公鑰,是用來和客戶端一起發布出去用來加密數數據的。
證書有了以後就是加密解密。C#程序,估計這個你已經寫過。
然後將導出的證書導入到你的 IOS程序中,寫相應的程序。
注意:RSA分組加密是採用了1024位的密鑰,所以密鑰長度為1024/8=128個byte。而C#默認採用#PKSC1的padding模式,每次最多可以加密128-11=117個byte。也就是說,RSA分組加密演算法每次從明文里取<=117個byte,然後加密成128個byte的密文;解密的時候,每次就取128個byte的密文,將其解密成<=117個byte的明文。因為#PKSC1的padding模式每次padding的內容是隨機的,所以即使是加密同一段明文,每次的結果也不一樣,這大大的增加了數據安全性。
ios端:就是每次取117個byte的明文並加密成128個byte的密文,最後連起來做base64編碼。
給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使用起來,只要點擊需要加密的文件的右鍵,即可輕松實現文件的加密。
解密只要雙擊已加密文件,輸入密碼即可輕松搞定。