1. 程式人生 > >Android安全加密:非對稱加密

Android安全加密:非對稱加密

Android安全加密專題文章索引

1. 介紹

與對稱加密演算法不同,非對稱加密演算法需要兩個金鑰:公鑰(publickey)和私鑰(privatekey)。公鑰與私鑰是一對,如果用公鑰對資料進行加密,只有用對應的私鑰才能解密;如果用私鑰對資料進行加密,那麼只有用對應的公鑰才能解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。

簡單理解為:加密和解密是不同的鑰匙

這裡寫圖片描述

2. 常見演算法

RSA、Elgamal、揹包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)等,其中支付寶使用的就是RSA演算法

3. RSA 演算法原理

質因數、尤拉函式、模反元素
原理很複雜,只需要知道內部是基於分解質因數和取模操作即可

4. 使用步驟

//1,獲取cipher 物件
Cipher cipher = Cipher.getInstance("RSA");
//2,通過祕鑰對生成器KeyPairGenerator 生成公鑰和私鑰
KeyPair keyPair = KeyPairGenerator.getInstance("RSA").generateKeyPair();
//使用公鑰進行加密,私鑰進行解密(也可以反過來使用)
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
//3,使用公鑰初始化密碼器
cipher.init(Cipher.ENCRYPT_MODE, publicKey); //4,執行加密操作 byte[] result = cipher.doFinal(content.getBytes()); //使用私鑰初始化密碼器 cipher.init(Cipher.DECRYPT_MODE, privateKey); //執行解密操作 byte[] deResult = cipher.doFinal(result);

5. 注意點

//一次性加密資料的長度不能大於117 位元組
private static final int ENCRYPT_BLOCK_MAX = 117;
//一次性解密的資料長度不能大於128 位元組
private static final int DECRYPT_BLOCK_MAX = 128;

6. 分批操作

/**
* 分批操作
*
* @param content 需要處理的資料
* @param cipher 密碼器(根據cipher 的不同,操作可能是加密或解密)
* @param blockSize 每次操作的塊大小,單位為位元組
* @return 返回處理完成後的結果
* @throws Exception
*/
 public static byte[] doFinalWithBatch(byte[] content, Cipher cipher, int blockSize) throwseption {
 int offset = 0;//操作的起始偏移位置
 int len = content.length;//資料總長度
 byte[] tmp;//臨時儲存操作結果
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 //如果剩下資料
 while (len - offset > 0) {
     if (len - offset >= blockSize) {
        //剩下資料還大於等於一個blockSize
        tmp = cipher.doFinal(content, offset, blockSize);
     }else {
         //剩下資料不足一個blockSize
         tmp = cipher.doFinal(content, offset, len - offset);
         }
     //將臨時結果儲存到記憶體緩衝區裡
     baos.write(tmp);
     offset = offset + blockSize;
     }
     baos.close();
     return baos.toByteArray();
 }

7. 非對稱加密用途

身份認證

一條加密資訊若能用A 的公鑰能解開,則該資訊一定是用A 的私鑰加密的,該能確定該使用者是A。

這裡寫圖片描述

陌生人通訊

A 和B 兩個人互不認識,A 把自己的公鑰發給B,B 也把自己的公鑰發給A,則雙方可以通過對方的公鑰加密資訊通訊。C 雖然也能得到A、B 的公鑰,但是他解不開密文。

這裡寫圖片描述

祕鑰交換

A 先得到B 的公鑰,然後A 生成一個隨機祕鑰,例如13245768,之後A 用B 的公鑰加密該祕鑰,得到加密後的祕鑰,例如dxs#[email protected],之後將該密文發給B,B 用自己的私鑰解密得到123456,之後雙方使用13245768 作為對稱加密的祕鑰通訊。C 就算截獲加密後的祕鑰dxs#[email protected],自己也解不開,這樣A、B 二人能通過對稱加密進行通訊。

這裡寫圖片描述

8. 總結

非對稱加密一般不會單獨拿來使用,他並不是為了取代對稱加密而出現的,非對稱加密速度比對稱加密慢很多,極端情況下會慢1000 倍,所以一般不會用來加密大量資料,通常我們經常會將對稱加密和非對稱加密兩種技術聯合起來使用,例如用非對稱加密來給稱加密裡的祕鑰進行加密(即祕鑰交換)。

Android視訊教程

相關推薦

Android安全加密對稱加密

Android安全加密專題文章索引 1. 介紹 與對稱加密演算法不同,非對稱加密演算法需要兩個金鑰:公鑰(publickey)和私鑰(privatekey)。公鑰與私鑰是一對,如果用公鑰對資料進行加密,只有用對應的私鑰才能解密;如果用私鑰對資料進行加

【IoT】加密安全對稱加密演算法 ECC 公私鑰 DER 編碼示例解析

加密演算法的公私鑰一般使用 ASN.1 標準的 DER 編碼格式,本文先介紹 ASN.1( ASN.1 基礎) 相關的基礎知識,最後給出 ECC 公鑰 DER 格式的示例便於更好理解 DER 編碼。 1、ASN.1 簡介 ASN.1( Abstract Syntax No

安全科普理解SSL(https)中的對稱加密對稱加密

轉:http://www.freebuf.com/articles/system/37624.html 今天剛好為站點的後臺弄了下https,就來分享我瞭解的吧。 密碼學最早可以追溯到古希臘羅馬時代,那時的加密方法很簡單:替換字母。 早期的密碼學: 古希臘人用一種叫  的工具加密。更快的工具是 —:只

【IoT】加密安全對稱加密演算法 RSA 1024 公鑰、祕鑰、明文和密文長度

RSA 1024 是指公鑰及私鑰分別是 1024bit,也就是 1024/8 = 128Bytes。 RSA 演算法金鑰長度的選擇是安全性和程式效能平衡的結果,金鑰長度越長,安全性越好,加密解密所需時間越長。 1、非對稱加密演算法中 1024bit 金鑰的強度相當於對稱加

《區塊鏈100問》第60集對稱加密算法是什麽?

有用 form link 區塊 log OS 保存 是什麽 png 對稱加密算法是指在加密和解密時使用的是同一個秘鑰。與對稱加密算法不同,非對稱加密算法需要公鑰和私鑰。公鑰和私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密。   非對稱加密與對稱加密相比,其

第10章 網路安全(1)_對稱加密對稱加密

1 網路安全概述 1.1 計算機網路面臨的安全威協 (1)截獲:攻擊者從網路上竊聽他人的通訊內容,通常把這類攻擊稱為“截獲”。在被動攻擊中,攻擊者只是觀察和分析某一個協議資料單元(PDU)而不干擾資訊流。 (2)篡改:攻擊者篡改網路上傳遞的報文。這裡包括徹底中斷傳遞的報文,甚至把完

【上】安全HTTPS-全面詳解對稱加密對稱加密,數字簽名,數字證書和HTTPS

此文章轉載來源於http://blog.csdn.net/tenfyguo/article/details/40922813點選開啟連結 一,對稱加密 所謂對稱加密,就是它們在編碼時使用的金鑰e和解碼時一樣d(e=d),我們就將其統稱為金鑰k。 對稱加解密的過

【下】安全HTTPS-全面詳解對稱加密對稱加密,數字簽名,數字證書和HTTPS

此文章轉載來源於http://blog.csdn.net/tenfyguo/article/details/40958727點選開啟連結 1.  HTTPS 1.1. 什麼是HTTPS HTTPS(HypertextTransfer Protocol Secur

Android開發-對稱加密對稱加密

對稱加碼和非對稱加密 對稱加密 對稱加密是指:加密和解密使用同一個祕鑰,所以叫對稱加密,對稱加密只有一個祕鑰作為私鑰 常見的對稱加密演算法有:DES,AES 非對稱加密 非對稱加密是指:加密和解密使用不同的金鑰,一把作為公開的公鑰,一把作為私鑰

Crypto++應用對稱加密RSA

1,非對稱加密RSA:     (1)乙方生成兩把金鑰(公鑰和私鑰)。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。     (2)甲方獲取乙方的公鑰,然後用它對資訊加密。     (3)乙方得到加密後的資訊,用私鑰解密。 2,使用CryptoPP實現RSA:

資訊保安的基礎對稱加密對稱加密、摘要演算法

加密分為兩大類:對稱加密、非對稱加密,兩類加密演算法各有優點,在不同的場景使用不同的演算法。 對稱加密 加密方將原始資料和加密金鑰一起經過特殊加密演算法處理後,生成密文結果,解密方使用相同的祕鑰及相同加密演算法的逆演算法對密文結果進行解密,公式如下:

對稱加密對稱加密

通過 lan pan 消息加密 ack 屬於 加密算法 效率 構建 1.對稱加密 對稱加密(也叫私鑰加密)指加密和解密使用相同密鑰的加密算法。有時又叫傳統密碼算法,就是加密密鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密密鑰中推算出來。而在大多數的對稱算法中,加密密

如何使用gpg工具實現公鑰加密對稱加密對稱加密)?

gpg工具 對稱加密 公鑰加密 非對稱加密 使用gpg實現公鑰加密【對稱加密】1、 對稱加密file文件gpg -c filels file.gpg------------------------對稱加密過程------------------------輸入口令,兩次,例如centos再查看

加密的類型及其相關算法--公鑰加密對稱加密

加密類型 公鑰加密 非對稱加密 前面講了幾節,對稱加密(解決:機密性),單向加密(解決:完整性),密鑰交換(解決:完整性)。但總是能被E在從中搗亂,有沒有一種辦法能解決驗證對方身份的方法呢? 這個時候公鑰加密算法出來了。眾所周知公鑰加密算法是密鑰對:公鑰(公開出去的,從私鑰中按照某種

對稱加密對稱加密

.com 對稱加密 alt str mage nbsp com strong bubuko 對稱加密和非對稱加密

php openssl_sign() 語法+RSA公私鑰加密解密,對稱加密演算法詳解

其實有時候覺得寫部落格好煩,就個函式就開篇部落格。很小的意見事情而已,知道的人看來多取一舉,或者說沒什麼必要,浪費時間,不知道的人就會很鬱悶。技術就是這樣的,懂的人覺得真的很簡單啊,不知道的人真的好難。。。 一般在跟第三方介面對接資料的時候,為了保證很多都使用的RSA簽名,沒性趣瞭解的同學只需要

MD5、對稱加密對稱加密的比較區別(乾貨)

轉載處:https://blog.csdn.net/lg2179/article/details/52535965       md5是一種不可逆的加密,一定記住是不可逆的。雖然現在很多演算法也可以將md5解密出來但是md5還是具有很大程度上的不可逆,而且

幾個例子理解對稱加密對稱加密、公鑰與私鑰、簽名與驗籤、數字證書、HTTPS加密方式

# 原創,轉載請留言聯絡 為什麼會出現這麼多加密啊,公鑰私鑰啊,簽名啊這些東西呢?說到底還是保證雙方通訊的安全性與完整性。例如小明發一封表白郵件給小紅,他總不希望給別人看見吧。而各種各樣的技術就是為了保障通訊的安全。(本文務必從上到下看) 1.對稱加密與非對稱加密 對稱加密: 對稱加密是

對 【對稱加密對稱加密以及CA】的理解(二)

非對稱加密更加安全但是費時費力,對稱加密雖然省時,快速但是不安全,於是就可以將它倆結合起來使用。 結合思路是這樣的:檔案傳輸用對稱加密,對稱加密的加密和解密用的都是同一個金鑰,用非對稱加密的公鑰對此對稱加密的金鑰進行加密,然後傳送出去,接收方用非對稱加密的私鑰對剛才用公鑰加密過的對稱加密的金鑰進

對 【對稱加密對稱加密以及CA】的理解(一)

最近申請了阿里雲的伺服器,進入了一個新的領域,當然一開始也是懵逼狀態,處於雲裡霧裡,決定將自己學習的計算機網路的相關知識複習一下。 對稱加密:即通訊雙方在對傳輸的檔案進行加密和解密時候,所用的是同一個金鑰。 優點:速度快,對稱性加密通常在訊息傳送方需要加密大量資料時使用,演算法公開、計算量小