1. 程式人生 > >iOS開發探索-RSA加解密

iOS開發探索-RSA加解密

RSA加解密需要兩個鑰匙,一個公鑰一個私鑰。

1.使用publicKey可以對資料進行加密

2.使用privateKey才能對資料進行解密

單方向傳輸

用公鑰加密的資料,只有私鑰能解開(可用於加密);

同時,使用私鑰加密的資料,只有公鑰能解開(簽名)。但是速度很慢(比私鑰加密慢100到1000倍),

公鑰的主要演算法有RSA,還包括Blowfish,Diffie-Helman等

公鑰與私鑰

1.權威數字認證機構(CA)給所有通訊主體(個人或組織)頒發公鑰和私鑰,彼此配對,分別唯一。

2.私鑰好比數字指紋,同時具有解密和加密功能。個人保管,不公開。

3.公鑰好比安全性極高的掛號信箱地址,公開。

公私鑰加解密舉例


設若甲有一份需保密的數字商業合同發給乙簽署。經過如下步驟:

1. 甲用乙的公鑰對合同加密。

2. 密文從甲傳送到乙。

3. 乙收到密文,並用自己的私鑰對其解密。

4. 解密正確,經閱讀,乙用自己的私鑰對合同進行簽署。

5. 乙用甲的公鑰對已經簽署的合同進行加密。

6. 乙將密文發給甲。

7. 甲用自己的私鑰將已簽署合同解密。

8. 解密正確,確認簽署。

公私鑰加解密說明

從以上步驟,我們知道:

1. 用公鑰加密的密文能且只能用與其唯一配對的私鑰才能解開。

2. 如果某份密文被解開,那麼肯定是密文的目標資訊主體解開的。

3. 私鑰因其唯一標識所有者的屬性,被用於數字簽名,具有法律效力。

IOS對Security.framework的封裝,實現RSA非對稱加密解密。可獲取公鑰和私鑰,可對資料進行公鑰和私鑰的加解密。 這種方式需要對密匙對進行處理, 根據public key生成證書, 通過private key生成p12格式的密匙.

iOS中使用RSA加密解密簡單實現



RSA金鑰對

3.匯入#import "RSA.h"標頭檔案以及新增第二步生成的公私鑰,呼叫對應的加解密方法


實際呼叫

4.以下為加解密後的結果


加解密結果

在此感謝各位讀者的來訪,您的關注是我寫作分享的最大動力。


相關推薦

iOS開發探索-RSA解密

RSA加解密需要兩個鑰匙,一個公鑰一個私鑰。 1.使用publicKey可以對資料進行加密 2.使用privateKey才能對資料進行解密 單方向傳輸 用公鑰加密的資料,只有私鑰能解開(可用於加密); 同時,使用私鑰加密的資料,只有公鑰能解開(簽名)。但

java rsa解密算法的實現

binary 0x03 object sat ear exc triple turn create RSAUtils:RSA加解密的實現 package com.rsa.test; import java.io.ByteArrayOutputStream; import

與非java語言使用RSA解密遇到的問題:algid parse error, not a sequence

write ltr 結果 cep exp result 命令 pat ror 遇到的問題 在一個與Ruby語言對接的項目中,決定使用RSA算法來作為數據傳輸的加密與簽名算法。但是,在使用Ruby生成後給我的私鑰時,卻發生了異常:IOException: algid pars

python3 rsa 解密 支持長字符串

keys max none common clas pan length 加密 new # rsa 加密 def rsa_encrypt_bytes(bytes_str, n, e): if not isinstance(bytes_str, bytes):

Vue項目中的RSA解密

用戶輸入 dft eba NPU str 文件 動態生成 console ted 前後端使用rsa加密: 一般是客戶端初始化時訪問登錄服務時,服務端面動態生成一對RSA對,公鑰傳給客戶端,客戶端拿到後,用戶輸入密碼後,點登錄時用公鑰加密返回給服務端,服務端用私鑰解就行了

java rsa解密

簡單實用java實現rsa加解密,java內部使用pkcs8格式私鑰,openssl預設為pkcs1私鑰,注意格式 maven專案 //pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="

使用python實現RSA解密演算法(包含讀取檔案操作),檔案內容為16進位制字串,同時實現對學號姓名的加密——(SCU應用密碼學實驗)

#-*- coding:UTF-8 -*- ''' time: 2018-5-30 content:RSA python 3.6 mac os ''' from random import randint import random im

PHP RSA解密示例

1.生成金鑰和公鑰  開始前需要準備openssl環境  linux 需要安裝openssl工具包,傳送門http://www.openssl.org/source/  window 下需要安裝openssl的程式,傳送門http://slproweb.com/prod

RSA解密工具類

參考: https://github.com/sjyuan-cc/cc.sjyuan.commons/blob/master/src/main/java/cc/sjyuan/commons/util/encryptor/RSAUtils.java package com.tinfinite.co

關於rsa解密的內容超長的問題

轉自:https://blog.csdn.net/taoxin52/article/details/53782470 一. 現象:      有一段老程式碼用來加密的,但是在使用key A的時候,丟擲了異常:javax.crypto.Illega

PHP RSA解密工具

/** * RSA加解密工具 * User: 樂楊俊 * Date: 2016/9/17 * Time: 下午4:06 */ namespace leyangjun\Lib; class CryptRsa { /** * 私鑰加密 */

RSA演算法原理——(3)RSA解密過程及公式論證

個人分類: 演算法 上期(RSA簡介及基礎數論知識)為大家介紹了:互質、尤拉函式、尤拉定理、模反元素 這四個數論的知識點,而這四個知識點是理解RSA加密演算法的基石,忘了的同學可以快速的回顧一遍。 三、RSA加解密過程及公式論證 今天的內容主要分為三

RSA解密——前端js加密,後臺解密

一、前端js     1、前端js           先引入 jsencrypt.js <script src="${pageContext.request.contextPath}/static/scripts/jquery/dist/jsencrypt.

資料加密:RSA 解密

1、加解密方法 對於RSA加解密來說,在iOS的API中同樣也是提供了這兩種形式的方法。 SecKeyEncrypt(加密) SecKeyDecrypt(解密) 複製程式碼 openssl 同樣也提供了一系列的方法: RSA_public_encrypt RSA_private_encrypt RSA_

PHP RSA解密示例(轉)

1.生成金鑰和公鑰  開始前需要準備openssl環境  linux 需要安裝openssl工具包,傳送門http://www.openssl.org/source/  window 下需要安裝openssl的程式,傳送門http://slproweb.com/product

RSA 解密 秘鑰對說明

rsa加解密 log 工具 對稱加密 -- 在線 拼接 lan ... rsa非對稱加密, 加解密需要不同的秘鑰,稱作一對。 rsa加解密分兩種,第一:公鑰加密私鑰解密。第二:私鑰加密公鑰解密。 需要註意的是,公加私解得到的密文是變化的,而私加公解的得到的密文是固定的。 生

RSA解密 私鑰加密公鑰解密公解 && C++ 調用openssl庫 的代碼實例

密鑰 code www. res result 方法 urn .cn read 前提:秘鑰長度=1024 ==============================================     對一片(117字節)明文加密 私加 ==============

PHP使用openssl實現RSA解密

業務場景就不用說了,有很多地方都用的到。在此寫出一個例子,一來供自己查閱,二來分享一下。。。 生成公鑰、私鑰的方法網上有很多,不過有個簡單的方法: 引用博友寫好的,點選連結檢視:linux下如何生成公鑰和私鑰 獲取到公鑰、私鑰之後,來看加密解密~~~~~~ 在此提一下跨語言

JS與PHP互通的RSA解密

<?php $private_key = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl TGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF

RSA解密簽以及驗籤。

由於RSA演算法是不對稱加密演算法,所以每次加密得到的資料都不相同,同理加簽得到的資料每次也不一樣。 簡單的說下不對稱演算法,就是兩把不同,但是完全匹配的祕鑰,去進行加解密,公鑰對外提供進行資料加密,私鑰自己儲存,對加密的資料進行解密。所以私鑰不要洩露。 RSA演算法原理: