當前位置:首頁 » 以太坊知識 » 以太坊錢包公鑰和私鑰

以太坊錢包公鑰和私鑰

發布時間: 2021-08-27 08:51:00

㈠ 公鑰和私鑰技術的區別

(一)對稱加密(Symmetric Cryptography)
對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的密鑰(secret key),這種方法在密碼學中叫做對稱加密演算法。對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。
對稱加密通常使用的是相對較小的密鑰,一般小於256 bit。因為密鑰越大,加密越強,但加密與解密的過程越慢。如果你只用1 bit來做這個密鑰,那黑客們可以先試著用0來解密,不行的話就再用1解;但如果你的密鑰有1 MB大,黑客們可能永遠也無法破解,但加密和解密的過程要花費很長的時間。密鑰的大小既要照顧到安全性,也要照顧到效率,是一個trade-off。
2000年10月2日,美國國家標准與技術研究所(NIST--American National Institute of Standards and Technology)選擇了Rijndael演算法作為新的高級加密標准(AES--Advanced Encryption Standard)。.NET中包含了Rijndael演算法,類名叫RijndaelManaged,下面舉個例子。
加密過程:

private string myData = "hello";
private string myPassword = "OpenSesame";
private byte[] cipherText;
private byte[] salt = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0 };

private void mnuSymmetricEncryption_Click(object sender, RoutedEventArgs e)
{
var key = new Rfc2898DeriveBytes(myPassword, salt);
// Encrypt the data.
var algorithm = new RijndaelManaged();
algorithm.Key = key.GetBytes(16);
algorithm.IV = key.GetBytes(16);
var sourceBytes = new System.Text.UnicodeEncoding().GetBytes(myData);
using (var sourceStream = new MemoryStream(sourceBytes))
using (var destinationStream = new MemoryStream())
using (var crypto = new CryptoStream(sourceStream, algorithm.CreateEncryptor(), CryptoStreamMode.Read))
{
moveBytes(crypto, destinationStream);
cipherText = destinationStream.ToArray();
}
MessageBox.Show(String.Format("Data:{0}{1}Encrypted and Encoded:{2}", myData, Environment.NewLine, Convert.ToBase64String(cipherText)));
}
private void moveBytes(Stream source, Stream dest)
{
byte[] bytes = new byte[2048];
var count = source.Read(bytes, 0, bytes.Length);
while (0 != count)
{
dest.Write(bytes, 0, count);
count = source.Read(bytes, 0, bytes.Length);
}
}

解密過程:

private void mnuSymmetricDecryption_Click(object sender, RoutedEventArgs e)
{
if (cipherText == null)
{
MessageBox.Show("Encrypt Data First!");
return;
}
var key = new Rfc2898DeriveBytes(myPassword, salt);
// Try to decrypt, thus showing it can be round-tripped.
var algorithm = new RijndaelManaged();
algorithm.Key = key.GetBytes(16);
algorithm.IV = key.GetBytes(16);
using (var sourceStream = new MemoryStream(cipherText))
using (var destinationStream = new MemoryStream())
using (var crypto = new CryptoStream(sourceStream, algorithm.CreateDecryptor(), CryptoStreamMode.Read))
{
moveBytes(crypto, destinationStream);
var decryptedBytes = destinationStream.ToArray();
var decryptedMessage = new UnicodeEncoding().GetString(
decryptedBytes);
MessageBox.Show(decryptedMessage);
}
}

對稱加密的一大缺點是密鑰的管理與分配,換句話說,如何把密鑰發送到需要解密你的消息的人的手裡是一個問題。在發送密鑰的過程中,密鑰有很大的風險會被黑客們攔截。現實中通常的做法是將對稱加密的密鑰進行非對稱加密,然後傳送給需要它的人。

(二)非對稱加密(Asymmetric Cryptography)
1976年,美國學者Dime和Henman為解決信息公開傳送和密鑰管理問題,提出一種新的密鑰交換協議,允許在不安全的媒體上的通訊雙方交換信息,安全地達成一致的密鑰,這就是「公開密鑰系統」。相對於「對稱加密演算法」這種方法也叫做「非對稱加密演算法」。
非對稱加密為數據的加密與解密提供了一個非常安全的方法,它使用了一對密鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰則可以發給任何請求它的人。非對稱加密使用這對密鑰中的一個進行加密,而解密則需要另一個密鑰。比如,你向銀行請求公鑰,銀行將公鑰發給你,你使用公鑰對消息加密,那麼只有私鑰的持有人--銀行才能對你的消息解密。與對稱加密不同的是,銀行不需要將私鑰通過網路發送出去,因此安全性大大提高。
目前最常用的非對稱加密演算法是RSA演算法,是Rivest, Shamir, 和Adleman於1978年發明,他們那時都是在MIT。.NET中也有RSA演算法,請看下面的例子:
加密過程:

private byte[] rsaCipherText;
private void mnuAsymmetricEncryption_Click(object sender, RoutedEventArgs e)
{
var rsa = 1;
// Encrypt the data.
var cspParms = new CspParameters(rsa);
cspParms.Flags = CspProviderFlags.UseMachineKeyStore;
cspParms.KeyContainerName = "My Keys";
var algorithm = new RSACryptoServiceProvider(cspParms);
var sourceBytes = new UnicodeEncoding().GetBytes(myData);
rsaCipherText = algorithm.Encrypt(sourceBytes, true);
MessageBox.Show(String.Format("Data: {0}{1}Encrypted and Encoded: {2}",
myData, Environment.NewLine,
Convert.ToBase64String(rsaCipherText)));
}

解密過程:

private void mnuAsymmetricDecryption_Click(object sender, RoutedEventArgs e)
{
if(rsaCipherText==null)
{
MessageBox.Show("Encrypt First!");
return;
}
var rsa = 1;
// decrypt the data.
var cspParms = new CspParameters(rsa);
cspParms.Flags = CspProviderFlags.UseMachineKeyStore;
cspParms.KeyContainerName = "My Keys";
var algorithm = new RSACryptoServiceProvider(cspParms);
var unencrypted = algorithm.Decrypt(rsaCipherText, true);
MessageBox.Show(new UnicodeEncoding().GetString(unencrypted));
}

雖然非對稱加密很安全,但是和對稱加密比起來,它非常的慢,所以我們還是要用對稱加密來傳送消息,但對稱加密所使用的密鑰我們可以通過非對稱加密的方式發送出去。為了解釋這個過程,請看下面的例子:
(1) Alice需要在銀行的網站做一筆交易,她的瀏覽器首先生成了一個隨機數作為對稱密鑰。
(2) Alice的瀏覽器向銀行的網站請求公鑰。
(3) 銀行將公鑰發送給Alice。
(4) Alice的瀏覽器使用銀行的公鑰將自己的對稱密鑰加密。
(5) Alice的瀏覽器將加密後的對稱密鑰發送給銀行。
(6) 銀行使用私鑰解密得到Alice瀏覽器的對稱密鑰。
(7) Alice與銀行可以使用對稱密鑰來對溝通的內容進行加密與解密了。

(三)總結
(1) 對稱加密加密與解密使用的是同樣的密鑰,所以速度快,但由於需要將密鑰在網路傳輸,所以安全性不高。
(2) 非對稱加密使用了一對密鑰,公鑰與私鑰,所以安全性高,但加密與解密速度慢。
(3) 解決的辦法是將對稱加密的密鑰使用非對稱加密的公鑰進行加密,然後發送出去,接收方使用私鑰進行解密得到對稱加密的密鑰,然後雙方可以使用對稱加密來進行溝通。

㈡ 以太妨錢包映射中私鑰丟失怎麼找回

丟失的話最好是在貼丟失廣告

㈢ 公鑰和私鑰的關系

1.首先我們需要區分加密和認證這兩個基本概念。
加密是將數據資料加密,使得非法用戶即使取得加密過的資料,也無法獲取正確的資料內容,所以數據加密可以保護數據,防止監聽攻擊。其重點在於數據的安全性。身份認證是用來判斷某個身份的真實性,確認身份後,系統才可以依不同的身份給予不同的許可權。其重點在於用戶的真實性。兩者的側重點是不同的。
2.其次我們還要了解公鑰和私鑰的概念和作用。
在現代密碼體制中加密和解密是採用不同的密鑰(公開密鑰),也就是非對稱密鑰密碼系統,每個通信方均需要兩個密鑰,即公鑰和私鑰,這兩把密鑰可以互為加解密。公鑰是公開的,不需要保密,而私鑰是由個人自己持有,並且必須妥善保管和注意保密。 公鑰私鑰的原則: 一個公鑰對應一個私鑰。 密鑰對中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。 如果用其中一個密鑰加密數據,則只有對應的那個密鑰才可以解密。 如果用其中一個密鑰可以進行解密數據,則該數據必然是對應的那個密鑰進行的加密。

㈣ 什麼是公鑰和私鑰

公鑰和私鑰是通過一種演算法得到的一個密鑰對(即一個公鑰和一個私鑰),將其中的一個向外界公開,稱為公鑰;另一個自己保留,稱為私鑰。通過這種演算法得到的密鑰對能保證在世界范圍內是唯一的。使用這個密鑰對的時候,如果用其中一個密鑰加密一段數據,必須用另一個密鑰解密。比如用公鑰加密數據就必須用私鑰解密,如果用私鑰加密也必須用公鑰解密,否則解密將不會成功。

㈤ 想請問一下,公鑰和私鑰還有密碼的區別/謝謝了

公鑰是你提供給大家知道的你的密鑰,
私鑰是你自己保留的密鑰,是你身份的證明,
當對方給你發信息時,他用你的公鑰把數據加密,你收到信息後用私鑰解密,就可以讀取信息了,
說明白了,這相當於不同2把鑰匙。一把鑰匙是用來關鎖的,一把是用來開鎖的。

㈥ 什麼是CSR 什麼是公鑰和私鑰

補充一點:講的通俗點就是對所有的人來講是加密的,不可任意訪問的,但對於授權者和擁有者來講是沒有任何限制的。

㈦ 加密中 公鑰和私鑰如何獲得

舉個RSA的例子,A想發送明文9726給B,那麼他計算9726**3533(mod 11413)=5761,這就是密文,而B收到5761後,用自己的私鑰d=6597進行解密:5761**6597(mod 11413)=9726,就得到了明文.這里公鑰就是3533和11413,私鑰是6597和11413分解成的兩個質因數101和113.其他人雖然知道x**3353(mod 11413)=5761,但無法倒推回去求x,只有知道了私鑰101和113後才能用演算法得出6597.可以想像11413若是足夠大,那麼將其分解質因式會是很困難的,RSA就是建立在對大數分解質因式的困難上的,理論依據是費馬定理和歐拉定理

㈧ 密碼、密鑰、公鑰、私鑰有什麼區別

密碼是你可以在鍵盤上輸入的字元,但密鑰是指一種硬體,常被稱為加密狗,簡稱狗。密鑰是要接在電腦主機後面的,通過硬體來解密。 公鑰和私鑰或者稱非對稱密鑰和對稱密鑰是密碼體制的兩種方式。私鑰體制指加解密的密鑰相同或容易推出,因此加解密的密鑰都是保密的。公鑰體制指加解密密鑰彼此無法推出,公鑰公開,私鑰保密。
由上定義可知,公鑰私鑰是兩種不同的密碼體制,而不是兩個不同的應用或兩個不同的密鑰。因此在加密和簽名應用中,公鑰私鑰均可以使用。

㈨ 說明公鑰和私鑰各在什麼時候使用

1.公鑰和私鑰是一對經過演算法得出來的兩個文件,一個私鑰只對應一個公鑰,也就是有唯一性
密鑰的路徑:*.pkr是公鑰 而 *.skr是私鑰

2.獲得別人的公鑰可以使用PGP 軟體里的「搜索」從「keyserver.pgp.com」伺服器上找到。或者讓對方給你發一個公鑰給你。PGP一般用來發郵件較多,已經支待Out Look 或第三方郵件客戶端。發郵件時PGP會檢測到有一個會話(PGP軟體里可以設置加密方式:所有郵件,指定域名或收件人等等)他會自動查詢本地公鑰且加密發送出去。要是只發個文件的話你可以用PGP軟體里的「新建 PGP壓縮包」 加密分單獨設密碼或者用對方的公鑰加密。
3.PGP軟體界面左側:公鑰一般都在「全部密鑰」里、個人的私鑰在「我的私鑰」里。「全部密鑰」里存放的都是別人的公鑰包括你自己的,想把公鑰給別人的話在那個公鑰上」右鍵-->導出.「即可(是一個*.asc的文件)。在菜單「密鑰」里有PGP密鑰環屬性。你會看到公私鑰存放的位置。
4.發郵時件如設置後PGP會自動加密解密。發文件時在「新建 PGP壓縮包」 加密,周上第2點的後一句。私鑰不會在別人那裡,只有在自己手裡。除非你發給對方,用對方的公鑰加密文件,然後對方用自己的私鑰解密用自己公鑰加密的文件,反之對方用你的公鑰加密發給你。
5.PGP生成的是一對公私鑰是兩個文件,同上第1點。郵件加密的時候軟體自動幫你用對方的公鑰加密一般你不用管的。文件加密時注意下發給誰的用誰的公鑰加密,因為有唯一性

追問:
1.Key中已校驗選項為灰色,不是綠色的勾,請問是否有影響,如有該怎麼修正

答:發郵件肯定會有影響,國為灰色的PGP軟體不會啟用,發郵件是會提示找不到公鑰,需要你手動簽下名,右鍵灰色公鑰「sign」簽名。這種情況一般是由於對方沒有在PGP伺服器上傳後驗證或是PGP軟體的bug.
2.發送到伺服器的公鑰是跟郵箱掛鉤的,那也就可以直接攻擊郵箱後,重新製作公鑰,用製作公鑰發送到伺服器替換原本公鑰,這樣就可以冒充原公鑰,用新私鑰解密。這就不安全了啊。
答:一個私鑰只對應一個公鑰,也就是有唯一性。別忘了私鑰只在自己手裡哦。

㈩ 密鑰裡面公鑰和私鑰有啥區別

公鑰和私鑰或者稱非對稱密鑰和對稱密鑰是密碼體制的兩種方式。私鑰體制指加解密的密鑰相同或容易推出,因此加解密的密鑰都是保密的。公鑰體制指加解密密鑰彼此無法推出,公鑰公開,私鑰保密。
由上定義可知,公鑰私鑰是兩種不同的密碼體制,而不是兩個不同的應用或兩個不同的密鑰。因此在加密和簽名應用中,公鑰私鑰均可以使用。

熱點內容
對於冷錢包的疑問 發布:2025-07-14 18:16:22 瀏覽:494
幣圈熊市山寨幣能建倉嗎 發布:2025-07-14 18:16:21 瀏覽:657
人工智慧大數據雲計算區塊鏈互有聯系答案 發布:2025-07-14 18:13:08 瀏覽:785
區塊鏈項目群名 發布:2025-07-14 17:55:07 瀏覽:429
濟寧市任城區運河礦機廠製造廠 發布:2025-07-14 17:55:07 瀏覽:254
usdt轉賬能找到嗎 發布:2025-07-14 17:53:20 瀏覽:374
區塊鏈電子發票什麼 發布:2025-07-14 17:39:50 瀏覽:901
交換機右邊的介面eth 發布:2025-07-14 17:39:38 瀏覽:649
幣圈混久的人 發布:2025-07-14 17:30:23 瀏覽:591
互聯網幣圈項目大全 發布:2025-07-14 17:25:16 瀏覽:17