1. 前端使用crypto-js 3DES 加解密
crypto-js git地址
參考文察悄章:crypto-js 3DES 加解密( http://www.appblog.cn/2019/06/30/%E5%89%8D%E7%AB%AF%20crypto-js%203DES%20%E5%8A%A0%E8%A7%A3%E5%AF%86/ )
參考文章:crypto-js 加密 和 解密( https://blog.csdn.net/u013299635/article/details/102696911?utm_medium=distribute.pc_relevant.none-task-blog--3.e_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog--3.e_weight
)
需棚沒擾鏈旦求描述:登錄密碼使用3des加密傳給後端,引入crypto-js方式為html引入
2. 如何使用java對密碼加密 加密方式aes
Java有相關的實現類:具體原理如下
對於任意長度的明文,AES首先對其進行分組,每組的長度為128位。分組之後將分別對每個128位的明文分組進行加密。
對於每個128位長度的明文分組的加密過程如下:
(1)將128位AES明文分組放入狀態矩陣中。
(2)AddRoundKey變換:對狀態矩陣進行AddRoundKey變換,與膨脹後的密鑰進行異或操作(密鑰膨脹將在實驗原理七中詳細討論)。
(3)10輪循環:AES對狀態矩陣進行了10輪類似的子加密過程。前9輪子加密過程中,每一輪子加密過程包括4種不同的變換,而最後一輪只有3種變換,前9輪的子加密步驟如下:
● SubBytes變換:SubBytes變換是一個對狀態矩陣非線性的變換;
● ShiftRows變換:ShiftRows變換對狀態矩陣的行進行循環移位;
● MixColumns變換:MixColumns變換對狀態矩陣的列進行變換;
● AddRoundKey變換:AddRoundKey變換對狀態矩陣和膨脹後的密鑰進行異或操作。
最後一輪的子加密步驟如下:
● SubBytes變換:SubBytes變換是一個對狀態矩陣非線性的變換;
● ShiftRows變換:ShiftRows變換對狀態矩陣的行進行循環移位;
● AddRoundKey變換:AddRoundKey變換對狀態矩陣和膨脹後的密鑰進行異或操作;
(4)經過10輪循環的狀態矩陣中的內容就是加密後的密文。
AES的加密演算法的偽代碼如下。
在AES演算法中,AddRoundKey變換需要使用膨脹後的密鑰,原始的128位密鑰經過膨脹會產生44個字(每個字為32位)的膨脹後的密鑰,這44個字的膨脹後的密鑰供11次AddRoundKey變換使用,一次AddRoundKey使用4個字(128位)的膨脹後的密鑰。
三.AES的分組過程
對於任意長度的明文,AES首先對其進行分組,分組的方法與DES相同,即對長度不足的明文分組後面補充0即可,只是每一組的長度為128位。
AES的密鑰長度有128比特,192比特和256比特三種標准,其他長度的密鑰並沒有列入到AES聯邦標准中,在下面的介紹中,我們將以128位密鑰為例。
四.狀態矩陣
狀態矩陣是一個4行、4列的位元組矩陣,所謂位元組矩陣就是指矩陣中的每個元素都是一個1位元組長度的數據。我們將狀態矩陣記為State,State中的元素記為Sij,表示狀態矩陣中第i行第j列的元素。128比特的明文分組按位元組分成16塊,第一塊記為「塊0」,第二塊記為「塊1」,依此類推,最後一塊記為「塊15」,然後將這16塊明文數據放入到狀態矩陣中,將這16塊明文數據放入到狀態矩陣中的方法如圖2-2-1所示。
塊0
塊4
塊8
塊12
塊1
塊5
塊9
塊13
塊2
塊6
塊10
塊14
塊3
塊7
塊11
塊15
圖2-2-1 將明文塊放入狀態矩陣中
五.AddRoundKey變換
狀態矩陣生成以後,首先要進行AddRoundKey變換,AddRoundKey變換將狀態矩陣與膨脹後的密鑰進行按位異或運算,如下所示。
其中,c表示列數,數組W為膨脹後的密鑰,round為加密輪數,Nb為狀態矩陣的列數。
它的過程如圖2-2-2所示。
圖2-2-2 AES演算法AddRoundKey變換
六.10輪循環
經過AddRoundKey的狀態矩陣要繼續進行10輪類似的子加密過程。前9輪子加密過程中,每一輪要經過4種不同的變換,即SubBytes變換、ShiftRows變換、MixColumns變換和AddRoundKey變換,而最後一輪只有3種變換,即SubBytes變換、ShiftRows變換和AddRoundKey變換。AddRoundKey變換已經討論過,下面分別討論餘下的三種變換。
1.SubBytes變換
SubBytes是一個獨立作用於狀態位元組的非線性變換,它由以下兩個步驟組成:
(1)在GF(28)域,求乘法的逆運算,即對於α∈GF(28)求β∈GF(28),使αβ =βα = 1mod(x8 + x4 + x3 + x + 1)。
(2)在GF(28)域做變換,變換使用矩陣乘法,如下所示:
由於所有的運算都在GF(28)域上進行,所以最後的結果都在GF(28)上。若g∈GF(28)是GF(28)的本原元素,則對於α∈GF(28),α≠0,則存在
β ∈ GF(28),使得:
β = gαmod(x8 + x4 + x3 + x + 1)
由於g255 = 1mod(x8 + x4 + x3 + x + 1)
所以g255-α = β-1mod(x8 + x4 + x3 + x + 1)
根據SubBytes變換演算法,可以得出SubBytes的置換表,如表2-2-1所示,這個表也叫做AES的S盒。該表的使用方法如下:狀態矩陣中每個元素都要經過該表替換,每個元素為8比特,前4比特決定了行號,後4比特決定了列號,例如求SubBytes(0C)查表的0行C列得FE。
表2-2-1 AES的SubBytes置換表
它的變換過程如圖2-2-3所示。
圖2-2-3 SubBytes變換
AES加密過程需要用到一些數學基礎,其中包括GF(2)域上的多項式、GF(28)域上的多項式的計算和矩陣乘法運算等,有興趣的同學請參考相關的數學書籍。
2.ShiftRows變換
ShiftRows變換比較簡單,狀態矩陣的第1行不發生改變,第2行循環左移1位元組,第3行循環左移2位元組,第4行循環左移3位元組。ShiftRows變換的過程如圖2-2-4所示。
圖2-2-4 AES的ShiftRows變換
3.MixColumns變換
在MixColumns變換中,狀態矩陣的列看作是域GF(28)的多項式,模(x4+1)乘以c(x)的結果:
c(x)=(03)x3+(01)x2+(01)x+(02)
這里(03)為十六進製表示,依此類推。c(x)與x4+1互質,故存在逆:
d(x)=(0B)x3+(0D)x2+(0G)x+(0E)使c(x)•d(x) = (D1)mod(x4+1)。
設有:
它的過程如圖2-2-5所示。
圖2-2-5 AES演算法MixColumns變換
七.密鑰膨脹
在AES演算法中,AddRoundKey變換需要使用膨脹後的密鑰,膨脹後的密鑰記為子密鑰,原始的128位密鑰經過膨脹會產生44個字(每個字為32位)的子密鑰,這44個字的子密鑰供11次AddRoundKey變換使用,一次AddRoundKey使用4個字(128位)的膨脹後的密鑰。
密鑰膨脹演算法是以字為基礎的(一個字由4個位元組組成,即32比特)。128比特的原始密鑰經過膨脹後將產生44個字的子密鑰,我們將這44個密鑰保存在一個字數組中,記為W[44]。128比特的原始密鑰分成16份,存放在一個位元組的數組:Key[0],Key[1]……Key[15]中。
在密鑰膨脹演算法中,Rcon是一個10個字的數組,在數組中保存著演算法定義的常數,分別為:
Rcon[0] = 0x01000000
Rcon[1] = 0x02000000
Rcon[2] = 0x04000000
Rcon[3] = 0x08000000
Rcon[4] = 0x10000000
Rcon[5] = 0x20000000
Rcon[6] = 0x40000000
Rcon[7] = 0x80000000
Rcon[8] = 0x1b000000
Rcon[9] = 0x36000000
另外,在密鑰膨脹中包括其他兩個操作RotWord和SubWord,下面對這兩個操作做說明:
RotWord( B0,B1,B2,B3 )對4個位元組B0,B1,B2,B3進行循環移位,即
RotWord( B0,B1,B2,B3 ) = ( B1,B2,B3,B0 )
SubWord( B0,B1,B2,B3 )對4個位元組B0,B1,B2,B3使用AES的S盒,即
SubWord( B0,B1,B2,B3 ) = ( B』0,B』1,B』2,B』3 )
其中,B』i = SubBytes(Bi),i = 0,1,2,3。
密鑰膨脹的演算法如下:
八.解密過程
AES的加密和解密過程並不相同,首先密文按128位分組,分組方法和加密時的分組方法相同,然後進行輪變換。
AES的解密過程可以看成是加密過程的逆過程,它也由10輪循環組成,每一輪循環包括四個變換分別為InvShiftRows變換、InvSubBytes變換、InvMixColumns變換和AddRoundKey變換;
這個過程可以描述為如下代碼片段所示:
九.InvShiftRows變換
InvShiftRows變換是ShiftRows變換的逆過程,十分簡單,指定InvShiftRows的變換如下。
Sr,(c+shift(r,Nb))modNb= Sr,c for 0 < r< 4 and 0 ≤ c < Nb
圖2-2-6演示了這個過程。
圖2-2-6 AES演算法InvShiftRows變換
十.InvSubBytes變換
InvSubBytes變換是SubBytes變換的逆變換,利用AES的S盒的逆作位元組置換,表2-2-2為InvSubBytes變換的置換表。
表2-2-2 InvSubBytes置換表
十一.InvMixColumns變換
InvMixColumns變換與MixColumns變換類似,每列乘以d(x)
d(x) = (OB)x3 + (0D)x2 + (0G)x + (0E)
下列等式成立:
( (03)x3 + (01)x2 + (01)x + (02) )⊙d(x) = (01)
上面的內容可以描述為以下的矩陣乘法:
十二.AddRoundKey變換
AES解密過程的AddRoundKey變換與加密過程中的AddRoundKey變換一樣,都是按位與子密鑰做異或操作。解密過程的密鑰膨脹演算法也與加密的密鑰膨脹演算法相同。最後狀態矩陣中的數據就是明文。
3. 移動端與後端數據傳輸加密
對稱加密:對稱加密加密與解密使用的是同樣的密鑰,所以速度快,但由於需要將密鑰在網路傳輸,所以安全性不高
非對稱加密:非對稱加密使用了一對密鑰,公鑰與私鑰,所以安全性高,但加密與解密速度慢。
方案:將對稱加密的密鑰使用非對稱加密的公鑰進行加密,然後發送出去,接收方使用私鑰進行解密得到對稱加密的密鑰,然後雙方可以使用對稱加密來進行溝通。
方案的流程介紹:
1、APP客戶端需要和伺服器進行數據交互,它的APP首先生成了一個隨機數作為對稱密鑰(比如AES加密的密鑰)。
2、APP客戶端向伺服器請求公鑰
3、伺服器將公鑰發送給APP客戶端
4、APP客戶端使用伺服器的公鑰將自己的對稱密鑰(比如AES加密的密鑰)加密
5、APP客戶端將加密後的對稱密鑰發送給伺服器
6、伺服器使用私鑰解密得到APP客戶端的對稱密鑰
7、APP客戶端與伺服器可以使用對稱密鑰來對溝通的內容進行加密與解密了
App端和後台數據加密分兩部分:
1.數據傳輸的時候加密 (一般採用Https協議在傳輸層加密)
2.數據本身的加密 (使用各種加密演算法)
RSA非對稱加密:公鑰加密,私鑰解密。公鑰私鑰由服務端生成,公鑰放在客戶端私密保存,私鑰放在服務端。安全性高,運算速度慢
AES對成加密:運算速度快切安全性高
上面網路通信過程是安全的,可以保證通信數據即使被截取了,也無法獲得任何有效信息;即使被篡改了,也無法被客戶端和服務端驗證通過。
具體可參考的博文:(記得後續實踐哦)
https://blog.csdn.net/wangjiang_qianmo/article/details/88073848?utm_medium=distribute.pc_relevant.none-task-blog--1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog--1.channel_param
4. Paillier同態加密演算法
Paillier加密是一種公鑰加密演算法,基於復合剩餘類的困難問題。其滿足於加法同態,即密文相乘等於明文相加,即:
密鑰生成
快速生成私鑰
在密鑰相同的情況下,可以快速生成密鑰:
, 為歐拉函數,即
加密
解密
加法同態
Paillier加密的兩個密文消息相乘的結果解密後得到兩個消息相加的結果。
對於兩個密文 和
其中 和 都是 中的元素,因此 也屬於 , 並具有相同的性質,所以 可以看作是 加密的密文, 的解密結果為 。
總結
常見的同態加密演算法中,Paillier演算法和Benaloh演算法僅滿足加法同態,RSA演算法和ElGamal演算法只滿足乘法同態,而Gentry演算法則是全同態的。
https://en.wikipedia.org/wiki/Paillier_cryptosystem
https://blog.csdn.net/sinianluoye/article/details/82855059
http://www.cs.tau.ac.il/~fiat/crypt07/papers/Pai99pai.pdf
5. auth返回狀態碼異常
throw new AuthException("ssCode","登錄錯了");
返回:
{
"error" : "ssCode",
"error_description" : "登錄錯了"
}
文章知識點與官方知識檔案匹配
Java技能樹首頁概覽
86213 人正在系統學習中
打開CSDN,閱讀體驗更佳
springsecurity+oauth2+jwt實現單點吵備冊登錄demo
該資源是springsecurity+oauth2+jwt實現的單點登錄demo,模式為授權碼模式,實現自定義登錄頁面和自定義授權頁面。應用數據存在內存中或者存在資料庫中(附帶資料庫表結構),token存儲分為資料庫或者Redis。demo包含服務端和客戶端,可直接運行測試。
Spring Security OAuth2 認證伺服器自定義異常處理
認證伺服器默認返回的數據格式如下: { "error": "unsupported_grant_type", "error_description": "Unsupported grant type: password1" } 上面的返回結果很不友好,而且前端代碼也很難判斷是什麼錯誤,所以我們需要對返回的錯誤進行統一的異常處理 1.默認的異常處理器 默認情況是使用WebRespo...
繼續訪問
自定義spring security oauth /auth/token的返回內容格式
場景 在前後端分離的項目中,一般後端返回給前端的格式是一個固定的json格式。 在這個前提下,spring security oauth 生成access token的請求/auth/token的返回內容就需要自定義 原返回值 我們希望使用我們自己固定的json格式 需求 我們的BaseResponse類 public class BaseResponse { pri...
繼續訪問
Spring Security OAuth2模塊/oauth/token授權介面自定義返回結果
spring security提供了默認的oauth登錄授權升宏介面/oauth/token,該介面位於org.springframework.security.oauth2.provider.endpoint包中的TokenEndpoint類。 公司要實現自定義的登錄授權介面,且返回值滾型也要實現私有結構,下面大概講一下怎麼改造這個類來實現要求的業務邏輯。 一、利用Spring AOP方式 二、自定義Controller介面實現 簡單粗暴,直接把TokenEndpointer類注入到自定義Controller中;
繼續訪問
Spring Security Oauth2 自定義異常返回信息
開頭引用 https://my.oschina.net/merryyou/blog/1819572 在使用Spring Security Oauth2登錄和鑒權失敗時,默認返回的異常信息如下 { "error": "unauthorized", "error_description": "Full authentication is required to access this r...
繼續訪問
oauth2.0源碼分析之oauth/token申請令牌
本期介紹的是在oauth2.0中 , 通過調用oauth/token介面 , 框架是如何給我們申請到JWT令牌的 , 內部做了些什麼事情 ? 在分析源碼之前 , 我們首先需要知道的是我們需要具備哪些調試條件 , 不然會發現許多奇奇怪怪的錯誤 (比如通過/oauth/token時出現401) 1.一張oauth2.0的內置表(oauth_client_details) 注意:這里的密碼需要用Bcript加密 , 因為源碼內部是用Bcript解密的 2.兩把鑰匙: 一本是後綴為jks的私鑰 另一本是後綴為k
繼續訪問
SpringSecurity+OAuth2認證/oauth/token登錄報錯There is no client authentication
報錯信息: { "error": "unauthorized", "error_description": "There is no client authentication. Try adding an appropriate authentication filter." } 找到這個問題原因後,發現自己被自己蠢哭了。 在自己的核心配置類里,把這個/oauth/token加入到忽...
繼續訪問
spring security+Oauth2密碼模式認證時,報401,Unauthorized的問題排查
第一種情況: 進行 /auth/token的post請求時,沒有進行httpbasic認證。 什麼是http Basic認證? http協議的一種認證方式,將客戶端id和客戶端密碼按照「客戶端ID:客戶端密碼」的格式拼接,並用base64編碼,放在 header中請求服務端。例子如下: Authorization:Basic ASDLKFALDSFAJSLDFKLASD= ASDLKFALDSFAJSLDFKLASD= 就是 客戶端ID:客戶端密碼 的64編碼 springsecurity中的...
繼續訪問
最新發布 SpringBoot使用SpringSecurity,使用oauth2登錄,使用自定義/uaa/oauth/token報錯解決
SpringBoot使用SpringSecurity,使用oauth2登錄,使用自定義/uaa/oauth/token報錯解決
繼續訪問
asp.net WebAPI OWIN OAuth2.0授權自定義返回結果及錯誤或異常問題處理辦法
asp.net WebAPI OWIN OAuth2.0授權自定義返回結果及錯誤或異常問題處理核心代碼,詳情: https://www.cnblogs.com/wgx0428/p/12315546.html
ASP.NET WebAPI Token JWT Bearer 認證失敗和成功返回自定義數據 Json
asp.net WebAPI Token Oauth2.0授權自定義返回結果(包括登錄正確返回,登錄失敗返回)。 詳細參考:https://blog.csdn.net/u013546115/article/details/105580532
Spring Security OAuth2 token許可權隔離實例解析
主要介紹了Spring Security OAuth2 token許可權隔離實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
spring security oauth其中的/oauth/token做了哪些
項目場景: 問題描述: 提示:這里描述項目中遇到的問題: 例如:數據傳輸過程中數據不時出現丟失的情況,偶爾會丟失一部分數據 APP 中接收數據代碼: 原因分析: 提示:這里填寫問題的分析: 例如:Handler 發送消息有兩種方式,分別是 Handler.obtainMessage()和 Handler.sendMessage(),其中 obtainMessage 方式當數據量過大時,由於 MessageQuene 大小也有限,所以當 message 處理不及時時,會造成先傳的數據被覆蓋,進而.
繼續訪問
Spring Security OAuth2 自定義 token Exception
https://raw.githubusercontent.com/longfeizheng/longfeizheng.github.io/master/images/spring-security-OAuth208.png 1. 前言 在使用Spring Security Oauth2登錄和鑒權失敗時,默認返回的異常信息如下 { "error": "unauthorized", "error_description": "Full authentication is required to
繼續訪問
前後端分離 token過期 返回狀態碼
1.首先配置Mvc配置文件類 @Configuration public class BackendConfiguration extends WebMvcConfigurationSupport { @Autowired private LoginInterceptor loginInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { regi
繼續訪問
SpringSecurityOAuth2(2)請求攜帶客戶端信息校驗,自定義異常返回,無權處理,token失效處理...
上文地址:SpringSecurityOAuth2(1)(password,authorization_code,refresh_token,client_credentials)獲取token 上一篇博客寫了一個至簡的OAuth2的token認證伺服器,只實現了4種獲取token的方式 ,對...
繼續訪問
oauth2.0自定義token失效返回信息
oauth2.0自定義token失效返回信息 一、問題 由於spring security oauth2返回的失效信息對於客戶端不太有好,在網上找了自定義的解決方案以便更優雅的展示返回信息。 重寫框架里的方法,實現自定義。 二、配置類 Oauth2ResourceServer extends @Override public void configure( reso
繼續訪問
熱門推薦 解決Spring Security OAuth在訪問/oauth/token時候報401 authentication is required
先來張圖片 我在用psotman 測試oauth授權碼模式的出現了401的異常, 就是調用oauth/token. 我是想用code換token,但是發現報錯了。這是為什麼呢? 首先你要理解 /oauth/token 這個如果配置支持的,且url中有client_...
繼續訪問
spring security 和OAuth2 整合訪問 localhost:8082/oauth/token 報401的問題,或者403的問題
@Bean public PasswordEncoder passwordEncoder() { /** * 采坑 * spring-boot2 之後廢棄了MD5,使用BCryptPasswordEncoder()加密; * */ return new BCryptPasswordEncoder(); } 注意在security的配置內中,要使用BCryptPasswordEncoder 加密,..
繼續訪問
資料庫課程設計
c語言文件讀寫操作代碼
html+css+js網頁設計
6. 如何安全保存密碼
過去一段時間來,眾多的網站遭遇用戶密碼資料庫泄露事件,這甚至包括頂級的互聯網企業–NASDQ上市的商務社交網路Linkedin,國內諸如CSDN一類的就更多了。
層出不窮的類似事件對用戶會造成巨大的影響,因為人們往往習慣在不同網站使用相同的密碼,一家「暴庫」,全部遭殃。
那麼在選擇密碼存儲方案時,容易掉入哪些陷阱,以及如何避免這些陷阱?我們將在實踐中的一些心得體會記錄於此,與大家分享。
菜鳥方案:
直接存儲用戶密碼的明文或者將密碼加密存儲。
曾經有一次我在某知名網站重置密碼,結果郵件中居然直接包含以前設置過的密碼。我和客服咨詢為什麼直接將密碼發送給用戶,客服答曰:「減少用戶步驟,用戶體驗更好」;再問「管理員是否可以直接獲知我的密碼」, 客服振振有詞:「我們用XXX演算法加密過的,不會有問題的」。 殊不知,密碼加密後一定能被解密獲得原始密碼,因此,該網站一旦資料庫泄露,所有用戶的密碼本身就大白於天下。
以後看到這類網站,大家最好都繞道而走,因為一家「暴庫」,全部遭殃。
入門方案:
將明文密碼做單向哈希後存儲。
單向哈希演算法有一個特性,無法通過哈希後的摘要(digest)恢復原始數據,這也是「單向」二字的來源,這一點和所有的加密演算法都不同。常用的單向哈希演算法包括SHA-256,SHA-1,MD5等。例如,對密碼「passwordhunter」進行SHA-256哈希後的摘要(digest)如下:
「」
可能是「單向」二字有誤導性,也可能是上面那串數字唬人,不少人誤以為這種方式很可靠, 其實不然。
單向哈希有兩個特性:
1)從同一個密碼進行單向哈希,得到的總是唯一確定的摘要
2)計算速度快。隨著技術進步,尤其是顯卡在高性能計算中的普及,一秒鍾能夠完成數十億次單向哈希計算
結合上面兩個特點,考慮到多數人所使用的密碼為常見的組合,攻擊者可以將所有密碼的常見組合進行單向哈希,得到一個摘要組合,然後與資料庫中的摘要進行比對即可獲得對應的密碼。這個摘要組合也被稱為rainbow table。
更糟糕的是,一個攻擊者只要建立上述的rainbow table,可以匹配所有的密碼資料庫。仍然等同於一家「暴庫」,全部遭殃。以後要是有某家廠商宣布「我們的密碼都是哈希後存儲的,絕對安全」,大家對這個行為要特別警惕並表示不屑。有興趣的朋友可以搜索下,看看哪家廠商躺著中槍了。
進階方案:
將明文密碼混入「隨機因素」,然後進行單向哈希後存儲,也就是所謂的「Salted Hash」。
這個方式相比上面的方案,最大的好處是針對每一個資料庫中的密碼,都需要建立一個完整的rainbow table進行匹配。 因為兩個同樣使用「passwordhunter」作為密碼的賬戶,在資料庫中存儲的摘要完全不同。
10多年以前,因為計算和內存大小的限制,這個方案還是足夠安全的,因為攻擊者沒有足夠的資源建立這么多的rainbow table。 但是,在今日,因為顯卡的恐怖的並行計算能力,這種攻擊已經完全可行。
專家方案:
故意增加密碼計算所需耗費的資源和時間,使得任何人都不可獲得足夠的資源建立所需的rainbow table。
這類方案有一個特點,演算法中都有個因子,用於指明計算密碼摘要所需要的資源和時間,也就是計算強度。計算強度越大,攻擊者建立rainbow table越困難,以至於不可繼續。
這類方案的常用演算法有三種:
1)PBKDF2(Password-Based Key Derivation Function)
PBKDF2簡單而言就是將salted hash進行多次重復計算,這個次數是可選擇的。如果計算一次所需要的時間是1微秒,那麼計算1百萬次就需要1秒鍾。假如攻擊一個密碼所需的rainbow table有1千萬條,建立所對應的rainbow table所需要的時間就是115天。這個代價足以讓大部分的攻擊者忘而生畏。
美國政府機構已經將這個方法標准化,並且用於一些政府和軍方的系統。 這個方案最大的優點是標准化,實現容易同時採用了久經考驗的SHA演算法。
2) bcrypt
bcrypt是專門為密碼存儲而設計的演算法,基於Blowfish加密演算法變形而來,由Niels Provos和David Mazières發表於1999年的USENIX。
bcrypt最大的好處是有一個參數(work factor),可用於調整計算強度,而且work factor是包括在輸出的摘要中的。隨著攻擊者計算能力的提高,使用者可以逐步增大work factor,而且不會影響已有用戶的登陸。
bcrypt經過了很多安全專家的仔細分析,使用在以安全著稱的OpenBSD中,一般認為它比PBKDF2更能承受隨著計算能力加強而帶來的風險。bcrypt也有廣泛的函數庫支持,因此我們建議使用這種方式存儲密碼。
3) scrypt
scrypt是由著名的FreeBSD黑客 Colin Percival為他的備份服務 Tarsnap開發的。
和上述兩種方案不同,scrypt不僅計算所需時間長,而且佔用的內存也多,使得並行計算多個摘要異常困難,因此利用rainbow table進行暴力攻擊更加困難。scrypt沒有在生產環境中大規模應用,並且缺乏仔細的審察和廣泛的函數庫支持。但是,scrypt在演算法層面只要沒有破綻,它的安全性應該高於PBKDF2和bcrypt。
來源:堅果雲投稿,堅果雲是一款類似Dropbox的雲存儲服務,可以自動同步、備份文件。
7. 加密的歷史
1。
古代加密方法(手工階段) 源於應用的無窮需求總是推動技術發明和進步的直接動力。存於石刻或史書中的記載表明,許多古代文明,包括埃及人、希伯來人、亞述人都在實踐中逐步發明了密碼系統。
從某種意義上說,戰爭是科學技術進步的催化劑。人類自從有了戰爭,就面臨著通信安全的需求,密碼技術源遠流長。
古代加密方法大約起源於公元前440年出現在古希臘戰爭中的隱寫術。當時為了安全傳送軍事情報,奴隸主剃光奴隸的頭發,將情報寫在奴隸的光頭上,待頭發長長後將奴隸送到另一個部落,再次剃光頭發,原有的信息復現出來,從而實現這兩個部落之間的秘密通信。
公元前400年,斯巴達人就發明了「塞塔式密碼」,即把長條紙螺旋形地斜繞在一個多棱棒上,將文字沿棒的水平方向從左到右書寫,寫一個字旋轉一下,寫完一行再另起一行從左到右寫,直到寫完。解下來後,紙條上的文字消息雜亂無章、無法理解,這就是密文,但將它繞在另一個同等尺寸的棒子上後,就能看到原始的消息。
這是最早的密碼技術。 我國古代也早有以藏頭詩、藏尾詩、漏格詩及繪畫等形式,將要表達的真正意思或「密語」隱藏在詩文或畫卷中特定位置的記載,一般人只注意詩或畫的表面意境,而不會去注意或很難發現隱藏其中的「話外之音」。
比如:我畫藍江水悠悠,愛晚亭楓葉愁。 秋月溶溶照佛寺,香煙裊裊繞輕樓 2。
古典密碼(機械階段) 古典密碼的加密方法一般是文字置換,使用手工或機械變換的方式實現。古典密碼系統已經初步體現出近代密碼系統的雛形,它比古代加密方法復雜,其變化較小。
古典密碼的代表密碼體制主要有:單表代替密碼、多表代替密碼及轉輪密碼。 3。
近代密碼(計算機階段) 密碼形成一門新的學科是在20世紀70年代,這是受計算機科學蓬勃發展 *** 和推動的結果。快速電子計算機和現代數學方法一方面為加密技術提供了新的概念和工具,另一方面也給破譯者提供了有力武器。
計算機和電子學時代的到來給密碼設計者帶來了前所未有的自由,他們可以輕易地擺脫原先用鉛筆和紙進行手工設計時易犯的錯誤,也不用再面對用電子機械方式實現的密碼機的高額費用。 總之,利用電子計算機可以設計出更為復雜的密碼系統。
密碼大事記 公元前5世紀,古希臘斯巴達出現原始的密碼器,用一條帶子纏繞在一根木棍上,沿木棍縱軸方向寫好明文,解下來的帶子上就只有雜亂無章的密文字母。
解密者只需找到相同直徑的木棍,再把帶子纏上去,沿木棍縱軸方向即可讀出有意義的明文。這是最早的換位密碼術。
公元前1世紀,著名的愷撒(Caesar)密碼被用於高盧戰爭中,這是一種簡單易行的單字母替代密碼。 公元9世紀, *** 的密碼學家阿爾·金迪(al' Kindi 也被稱為伊沙克 Ishaq,(801?~873年),同時還是天文學家、哲學家、化學家和音樂理論家)提出解密的頻度分析方法,通過分析計算密文字元出現的頻率破譯密碼。
公元16世紀中期,義大利的數學家卡爾達諾(G.Cardano,1501—1576)發明了卡爾達諾漏格板,覆蓋在密文上,可從漏格中讀出明文,這是較早的一種分置式密碼。 公元16世紀晚期,英國的菲利普斯(Philips)利用頻度分析法成功破解蘇格蘭女王瑪麗的密碼信,信中策劃暗殺英國女王伊麗莎白,這次解密將瑪麗送上了斷頭台。
幾乎在同一時期,法國外交官維熱納爾(或譯為維瓊內爾) Blaise de Vigenere(1523-1596)提出著名的維熱納爾方陣密表和維熱納爾密碼(Vigenerecypher),這是一種多表加密的替代密碼,可使阿爾—金迪和菲利普斯的頻度分析法失效。 公元1863,普魯士少校卡西斯基(Kasiski)首次從關鍵詞的長度著手將它破解。
英國的巴貝奇(Charles Babbage)通過仔細分析編碼字母的結構也將維熱納爾密碼破解。 公元20世紀初,第一次世界大戰進行到關鍵時刻,英國破譯密碼的專門機構「40號房間」利用繳獲的德國密碼本破譯了著名的「齊默爾曼電報」,促使美國放棄中立參戰,改變了戰爭進程。
大戰快結束時,准確地說是1918年,美國數學家吉爾伯特·維那姆發明一次性便箋密碼,它是一種理論上絕對無法破譯的加密系統,被譽為密碼編碼學的聖杯。但產生和分發大量隨機密鑰的困難使它的實際應用受到很大限制,從另一方面來說安全性也更加無法保證。
第二次世界大戰中,在破譯德國著名的「恩格瑪(Enigma)」密碼機密碼過程中,原本是以語言學家和人文學者為主的解碼團隊中加入了數學家和科學家。電腦之父亞倫·圖靈(Alan Mathison Turing)就是在這個時候加入了解碼隊伍,發明了一套更高明的解碼方法。
同時,這支優秀的隊伍設計了人類的第一部電腦來協助破解工作。顯然,越來越普及的計算機也是軍工轉民用產品。
美國人破譯了被稱為「紫密」的日本「九七式」密碼機密碼。靠前者,德國的許多重大軍事行動對盟軍都不成為秘密;靠後者,美軍炸死了偷襲珍珠港的元兇日本艦隊總司令山本五十六。
同樣在二次世界大戰中,印第安納瓦霍土著語言被美軍用作密碼,從吳宇森導演的《風語者》Windtalkers中能窺其一二。所謂風語者,是指美國二戰時候特別征摹使用的印第安納瓦約(Navajo)通信兵。
在二次世界大戰日美的太平洋戰場上,美國海軍軍部讓北墨西哥和亞歷桑那印第安納瓦約族人使用約瓦納語進行情報傳遞。納瓦約語的語法、音調及詞彙都極為獨特,不為世人所知道,當時納瓦約族以外的美國人中,能聽懂這種語言的也就一二十人。
這是密碼學和語言學的成功結合,納瓦霍語密碼成為歷史上從未被破譯的密碼。 1975年1月15日,對計算機系統和網路進行加密的DES(Data Encryption Standard數據加密標准)由美國國家標准局頒布為國家標准,這是密碼術歷史上一個具有里程碑意義的事件。
1976年,當時在美國斯坦福大學的迪菲(Diffie)和赫爾曼(Hellman)兩人提出了公開密鑰密碼的新思想(論文"New Direction in Cryptography"),把密鑰分為加密的公鑰和解密的私鑰,這是密碼學的一場革命。 1977年,美國的里維斯特(Ronald Rivest)、沙米爾(Adi Shamir)和阿德勒曼(Len Adleman)提出第一個較完善的公鑰密碼體制——RSA體制,這是一種建立在大數因子分解基礎上的演算法。
1985年,英國牛津大學物理學家戴維·多伊奇(David Deutsch)提出量子計算機的初步設想,這種計算機一旦造出來,可在30秒鍾內完成傳統計算機要花上100億年才能完成的大數因子分解,從而破解RSA運用這個大數產生公鑰來加密的信息。 同一年,美國的貝內特(Ben)根據他關於量子密碼術的協議,在實驗室第一次實現了量子密碼加密信息的通信。
盡管通信距離只有30厘米,但它證明了量子密碼術的實用性。與一次性便箋密碼結合,同樣利用量子的神奇物理特性,可產生連量子計算機也無法破譯的絕對安全的密碼。
2003,位於日內瓦的id Quantique公司和位於紐約的MagiQ技術公司,推出了傳送量子密鑰的距離超越了貝內特實驗中30厘米的商業產品。日本電氣公司在創紀錄的150公里傳送距離的演示後,最早將在明年向市場推出產品。
IBM、富士通和東芝等企業也在積極進行研發。目前,市面上的產品能夠將密鑰通過光纖傳送幾十公里。
美國的國家安全局和美聯儲都在考慮購買這種產品。MagiQ公司的一套系統價格在7萬美元到10萬美元之間。
://dev.csdn/article/62/62594.s。
致命錯誤引發歷史上最偉大的密碼破譯事件
--------------------------------------------------------------------------------
這是發生在第一次世界大戰時的事情,它在世界情報學歷史上佔有重要地位,它使得美國舉國震怒,結束中立,最終加入到對德作戰的行列。
第一次世界大戰期間,1917年1月17日,英軍截獲了一份以德國最高外交密碼 0075加密的電報。這個令人無法想像的密碼系統由1萬個詞和片語組成,與1000個數字碼群對應。密電來自德國外交部長阿瑟·齊麥曼,傳送給德國駐華盛頓大使約翰·馮·貝倫朵爾夫,然後繼續傳給德國駐墨西哥大使亨尼希·馮·艾克哈爾特。電文將在那裡解密,最後要交給墨西哥總統瓦律斯提阿諾·加漢扎。
密件從柏林經美國海底電纜送到了華盛頓。英軍在那裡將其截獲並意識到了它的重要性。英國密碼破譯專家開始全力以赴進行破譯,然而,面對這個未曾被破譯的新外交密碼系統,專家們絞盡腦筋仍一籌莫展。
令英國密碼破譯專家意想不到的機遇降臨了。接到密件的德國駐華盛頓大使約翰·馮·貝倫朵爾夫在他的華盛頓辦公室里犯下了致命的錯誤:他們在將電報用新的0075密件本譯出後,卻又用老的密件本將電報加密後傳送到墨西哥城。大使沒有意識到,他已經犯下了一個密碼使用者所能犯的最愚蠢的、最可悲的錯誤。
沒過多久,已經破譯了老密碼的英方便從德國大使的糊塗操作中獲得了新舊密碼的比較版本。英國的解碼人員開始了艱苦的工作:將密件在舊密碼中譯出,用紙筆建構模型。隨著齊麥曼的密件逐漸清晰,電報內容浮現出來,其重要性令人吃驚。
當時的情況是,盡管1915年美國的遠洋客輪「露斯塔尼亞」號被德軍擊沉,但只要德國此後對其潛艇的攻擊行動加以限制,美國仍將一直保持中立。齊麥曼的電文概括了德國要在1917年2月1日重新開始無限制海戰以抑制英國的企圖。為了讓美國無暇他顧,齊麥曼建議墨西哥入侵美國,宣布得克薩斯州、新墨西哥州和亞利桑那州重新歸其所有。德國還要墨西哥說服日本進攻美國,德國將提供軍事和資金援助。
英國海軍部急於將破譯的情報通知美國,但同時又不能讓德國知道其密碼已被破譯。於是,英國的一個特工成功地滲入了墨西哥電報局,得到了送往墨西哥總統的解了密的文件拷貝。這樣,秘密就可能是由墨西哥方泄露的,它以此為掩護將情報透露給了美國。
美國憤怒了。每個美國人都被激怒了。原先只是東海岸的人在關心戰局的進展,現在整個美國都開始擔心墨西哥的舉動。電文破譯後6個星期,美國總統伍德羅·威爾遜宣布美國對德宣戰。此時,站在他背後的是一個團結起來的憤怒的國家。齊麥曼的電文使整個美國相信德國是國家的敵人。這次破譯由此也被稱為密碼學歷史上最偉大的密碼破譯。
介紹密碼學的發展歷史
密碼學的發展歷程大致經歷了三個階段:古代加密方法、古典密碼和近代密碼。
1.古代加密方法(手工階段)
源於應用的無窮需求總是推動技術發明和進步的直接動力。存於石刻或史書中的記載表明,許多古代文明,包括埃及人、希伯來人、亞述人都在實踐中逐步發明了密碼系統。從某種意義上說,戰爭是科學技術進步的催化劑。人類自從有了戰爭,就面臨著通信安全的需求,密碼技術源遠流長。
古代加密方法大約起源於公元前440年出現在古希臘戰爭中的隱寫術。當時為了安全傳送軍事情報,奴隸主剃光奴隸的頭發,將情報寫在奴隸的光頭上,待頭發長長後將奴隸送到另一個部落,再次剃光頭發,原有的信息復現出來,從而實現這兩個部落之間的秘密通信。
公元前400年,斯巴達人就發明了「塞塔式密碼」,即把長條紙螺旋形地斜繞在一個多棱棒上,將文字沿棒的水平方向從左到右書寫,寫一個字旋轉一下,寫完一行再另起一行從左到右寫,直到寫完。解下來後,紙條上的文字消息雜亂無章、無法理解,這就是密文,但將它繞在另一個同等尺寸的棒子上後,就能看到原始的消息。這是最早的密碼技術。
我國古代也早有以藏頭詩、藏尾詩、漏格詩及繪畫等形式,將要表達的真正意思或「密語」隱藏在詩文或畫卷中特定位置的記載,一般人只注意詩或畫的表面意境,而不會去注意或很難發現隱藏其中的「話外之音」。
比如:我畫藍江水悠悠,愛晚亭楓葉愁。秋月溶溶照佛寺,香煙裊裊繞輕樓
2.古典密碼(機械階段)
古典密碼的加密方法一般是文字置換,使用手工或機械變換的方式實現。古典密碼系統已經初步體現出近代密碼系統的雛形,它比古代加密方法復雜,其變化較小。古典密碼的代表密碼體制主要有:單表代替密碼、多表代替密碼及轉輪密碼。
3.近代密碼(計算機階段)
密碼形成一門新的學科是在20世紀70年代,這是受計算機科學蓬勃發展 *** 和推動的結果。快速電子計算機和現代數學方法一方面為加密技術提供了新的概念和工具,另一方面也給破譯者提供了有力武器。計算機和電子學時代的到來給密碼設計者帶來了前所未有的自由,他們可以輕易地擺脫原先用鉛筆和紙進行手工設計時易犯的錯誤,也不用再面對用電子機械方式實現的密碼機的高額費用。總之,利用電子計算機可以設計出更為復雜的密碼系統。
1 解密方法在軟體的幫助裡面寫得很清楚。
最後的辦法是利用開始使用的時候填入的郵箱與客服聯系解密事宜。 2 你去官方網站下載最新的版本,然後重新安裝加密軟體,就行了 3 解鈴還需系鈴人!一般卸載了那個軟體也應該可以解密了的!如果不行,那個這個軟體就是水貨!建議用文件夾加密超級大師。
4 去網上下載個加密破解器。 5 以上4步都沒有解密,那就沒辦法了。
刪除軟體文件也沒辦法恢復。聯系作者吧!沒有更好的辦法了。
軟體界面上有聯系方式的。 最後說一句忠告的話:不要用免費的加密軟體,作者會故意留一些缺陷或者漏洞。
致命錯誤引發歷史上最偉大的密碼破譯事件 -------------------------------------------------------------------------------- 這是發生在第一次世界大戰時的事情,它在世界情報學歷史上佔有重要地位,它使得美國舉國震怒,結束中立,最終加入到對德作戰的行列。
第一次世界大戰期間,1917年1月17日,英軍截獲了一份以德國最高外交密碼 0075加密的電報。這個令人無法想像的密碼系統由1萬個詞和片語組成,與1000個數字碼群對應。
密電來自德國外交部長阿瑟·齊麥曼,傳送給德國駐華盛頓大使約翰·馮·貝倫朵爾夫,然後繼續傳給德國駐墨西哥大使亨尼希·馮·艾克哈爾特。電文將在那裡解密,最後要交給墨西哥總統瓦律斯提阿諾·加漢扎。
密件從柏林經美國海底電纜送到了華盛頓。英軍在那裡將其截獲並意識到了它的重要性。
英國密碼破譯專家開始全力以赴進行破譯,然而,面對這個未曾被破譯的新外交密碼系統,專家們絞盡腦筋仍一籌莫展。 令英國密碼破譯專家意想不到的機遇降臨了。
接到密件的德國駐華盛頓大使約翰·馮·貝倫朵爾夫在他的華盛頓辦公室里犯下了致命的錯誤:他們在將電報用新的0075密件本譯出後,卻又用老的密件本將電報加密後傳送到墨西哥城。大使沒有意識到,他已經犯下了一個密碼使用者所能犯的最愚蠢的、最可悲的錯誤。
沒過多久,已經破譯了老密碼的英方便從德國大使的糊塗操作中獲得了新舊密碼的比較版本。英國的解碼人員開始了艱苦的工作:將密件在舊密碼中譯出,用紙筆建構模型。
隨著齊麥曼的密件逐漸清晰,電報內容浮現出來,其重要性令人吃驚。 當時的情況是,盡管1915年美國的遠洋客輪「露斯塔尼亞」號被德軍擊沉,但只要德國此後對其潛艇的攻擊行動加以限制,美國仍將一直保持中立。
齊麥曼的電文概括了德國要在1917年2月1日重新開始無限制海戰以抑制英國的企圖。為了讓美國無暇他顧,齊麥曼建議墨西哥入侵美國,宣布得克薩斯州、新墨西哥州和亞利桑那州重新歸其所有。
德國還要墨西哥說服日本進攻美國,德國將提供軍事和資金援助。 英國海軍部急於將破譯的情報通知美國,但同時又不能讓德國知道其密碼已被破譯。
於是,英國的一個特工成功地滲入了墨西哥電報局,得到了送往墨西哥總統的解了密的文件拷貝。這樣,秘密就可能是由墨西哥方泄露的,它以此為掩護將情報透露給了美國。
美國憤怒了。每個美國人都被激怒了。
原先只是東海岸的人在關心戰局的進展,現在整個美國都開始擔心墨西哥的舉動。電文破譯後6個星期,美國總統伍德羅·威爾遜宣布美國對德宣戰。
此時,站在他背後的是一個團結起來的憤怒的國家。齊麥曼的電文使整個美國相信德國是國家的敵人。
這次破譯由此也被稱為密碼學歷史上最偉大的密碼破譯。
《山海經》之中,雄性的性狂想,只是很小很小的一部分,實際上,這部書里充斥著大量的原始性崇拜與性啟蒙。
書中的許多故事,如果出現在歐洲,出現在美洲,肯定是早就被解讀出來了。但是中國是一個含蓄的國度,雖然中國人口很多,生育率居高不下,但這種事情,做是可以做的,誰要是說出來,那可不見得是好事。
所以中國人有話要說,那我們就只能聽到神乎其神的神話:在西北方的海外,赤水的北岸,有座章尾山。山上住著一個神,長著人的面孔、蛇的身子而全身是紅色,身子長達一千里,豎立生長的眼睛正中合成一條縫,他閉上眼睛就是黑夜、睜開眼睛就是白晝,不吃飯、不睡覺、不呼吸,只以風雨為食物。
他能照耀陰暗的地方,所以稱作燭龍。 我們可以發現,神祇燭陰是男性性特徵的誇張表現,而神燭龍,卻是女性性特徵的極度誇張。
明白了,這個怪神,雖然是對女性性特徵的強烈誇張,但仍然充滿了男性的狂想。 在這里,男人渴望著這樣一種女人,她們不挑不揀、不嫌貧,任何時候都不會拒絕男人,這樣的話,男人就不需要打拚奮鬥了,不需要賺錢糊口了,只需要和女人沒日沒夜地歡愛下去,直到地久天長、地老天荒…… 不客氣地講,男人的性狂想走到這步,就有點距現實太遠了,所以這兩段禁忌性文字,即使化身於兩個奇怪的神,也仍然無法登堂入室,進入大眾的視線。
但是這種性狂想仍然存在,所以燭陰和燭龍這兩個怪神,說不定什麼時候還會躥出來,讓人們大吃一驚。除了燭陰和燭龍這兩個性神之外,在《山海經》中,甚至連雷神都帶有著明顯的性特徵。
雷澤中有一位雷神,長著龍的身子人的頭,他一鼓起肚子就響雷。這個雷神的姿勢好怪異……這個雷神,不過是原始社會時期的慾望之神,它很像是非洲土著部落中掌握了部落權力的酋長,將生殖器官用竹木誇張地裝飾起來,天天晃盪著在女原始人面前炫耀,要命的是,這些裝飾物雖然華美龐大,而且還會弄出巨大的音響效果,可是這些飾物一取掉,原始野男人就立即現了原形…… 正因為原形讓人沮喪,所以原始人最愛誇張自己的突凸之物,最愛炫耀自己的性能力——現代文明人也愛這么干,到目前為止,這種誇張與炫耀,仍然是男人的一種習慣與風格。
中國是世界上最早使用密碼的國家之一。而最難破解的「密電碼」也是中國人發明的。
反切注音方法出現於東漢末年,是用兩個字為另一個字注音,取上字的聲母和下字的韻母,「切」出另外一個字的讀音。「反切碼」就是在這種反切拼音基礎上發明的,發明人是著名的抗倭將領、軍事家戚繼光。戚繼光還專門編了兩首詩歌,作為「密碼本」:一首是:「柳邊求氣低,波他爭日時。鶯蒙語出喜,打掌與君知」;另一首是:「春花香,秋山開,嘉賓歡歌須金杯,孤燈光輝燒銀缸。之東郊,過西橋,雞聲催初天,奇梅歪遮溝。」
這兩首詩歌是反切碼全部秘密所在。取前一首中的前15個字的聲母,依次分別編號1到15;取後一首36字韻母,順序編號1到36。再將當時字音的八種聲調,也按順序編上號碼1到8,形成完整的「反切碼」體系。使用方法是:如送回的情報上的密碼有一串是5-25-2,對照聲母編號5是「低」,韻母歌編號25是「西」,兩字的聲母和韻母合到一起了是di,對照聲調是2,就可以切出「敵」字。戚繼光還專門編寫了一本《八音字義便覽》,作為訓練情報人員、通信兵的教材。
8. 銀行加密部分流程
我們來考慮一個報文中到底什麼信息是需要加密的,目前一般的做法是只對賬號和密碼進行加密(也有隻對密碼加密的),其他的內容不加密的。對賬號和密碼加密有個術語,叫PinBlock,即PIN塊,就是對賬號和密碼進行DES加密處理後的一個密文數據塊。既然使用了DES演算法來加密賬號和密碼,則必然有個Key來加密,那麼我們就把這個Key稱為PinKey(PIK),就是專門來加密用戶賬戶和密碼的Key。
原文鏈接: https://blog.csdn.net/u011974987/article/details/55506710
1、在ATM機上運行的系統叫ATMC,行內與ATMC直接連接的系統叫ATMP,ATMP再(經過ESB)連接核心賬務系統。2、在傳輸過程中是不會出現明文密碼的(但報文整體不一定加密,可能是明文帶MAC),所以ATMP不會解密密碼,而是校驗MAC,再將C端加密的密碼轉換成核心系統加密的密碼,這一步是由P端調用加密機API,在硬體加密機中直接完成的。3、核心系統收到P端的報文後,同樣調加密機API生成MAC與P端的MAC對比,並對比密碼。4、PIK和MAK確實是經過主密鑰加密的,但是調加密機API並不需要送PIK和MAK的值,只需要送密鑰的名稱,所以無論對對PIK/MAK的加解密,還是對PIN和MAC的加解密都是在加密機中完成的,其他應用系統不需要關心。
鏈接: https://www.hu.com/question/37455323/answer/134372564
zpk:區域pin密鑰,銀行卡交換系統和銀行A、銀行B,分別形成一個區域。
轉pin是從一把zpk加密轉到另一把zpk加密,這兩把zpk可能分屬兩家銀行,也可能是同一個銀行的?
ATMP:ATM前置機。
ATM加密後給ATMP(這個加密後的值不是pinblock,不是銀行系統識別持卡人用的),
ATMP收到之後,再調用加密機,生成pinblock,然後發給收單行。
整個流程,pin不會出現明文。