本文目錄一覽:
- 1、java api的解釋、介紹
- 2、API介面入門(二):API介面的簽名驗簽和加解密原理
- 3、APP中api加密和服務端解密一般是怎麼做
- 4、JSP和JAVA對數據進行加密解密
- 5、java如何用Aes加密和解密
java api的解釋、介紹
簡單的講,api就是一個幫助文檔,讓您能快速了解java的屬性,方法。加入想對字元串進行操作,就可以去api中查看String的方法,裡面會有每個方法的用法,返回值等等。。
Java API通過支持平台無關性和安全性,使得Java適應於網路應用。Java API是運行庫的集合,它提供了一套訪問主機系統資源的標準方法。運行Java程序時,虛擬機裝載程序的class文件所使用的Java API class文件。所有被裝載的class文件(包括從應用程序中和從Java API中提取的)和所有已經裝載的動態庫(包含本地方法)共同組成了再Java虛擬機上運行的整個程序。 在一個平台能偶支持Java程序以前,必須在這個特定平台上明確地實現API的功能。為訪問主機上的本地資源,Java API調用了本地方法。由於Java API class文件調用了本地方法,Java程序就不需要再調用它們了。通過這種方法,Java API class文件為底層主機提供了具有平台無關性、標準介面的Java程序。對Java程序而言,無論平台內部如何,Java API都會有同樣的表現和可預測的行為。正是由於在每個特定的主機平台上明確地實現了Java虛擬機和Java API,因此,Java程序自身就能夠成為具有平台無關性的程序。 Java API在Java安全性模型方面也有貢獻。當Java API的方法進行任何有潛在危險的操作(比如進行本地磁碟寫操作)之前,都會通過查詢訪問控制器來檢驗是否得到了授權。訪問控制器是一個類,該類用來執行棧檢驗,已決定是否允許某種操作。
API介面入門(二):API介面的簽名驗簽和加解密原理
本文目錄:
想像一個場景:一位許久不見的好兄弟,突然在微信裡面跟你說「兄弟,借我1萬應急唄」,你會怎麼反應?
我想大部分人馬上的反應就是:是不是被盜號了?他是本人嗎?
實際上這是我們日常生活中常見的通訊行為,系統間調用API和傳輸數據的過程無異於你和朋友間的微信溝通,所有處於開放環境的數據傳輸都是可以被截取,甚至被篡改的。因而數據傳輸存在著極大的危險,所以必須加密。
加密核心解決兩個問題:
古代人寫信通過郵差傳信,路途遙遠,他們為了避免重要的內容被發現,決定用密文來寫信,比如我想表達「八百標兵上北坡」,我寫成800north,並且收件人也知道怎麼閱讀這份信息,即使路上的人截取偷看了,也看不懂你們在說的什麼意思。同時我在文末簽上我的字跡,在盒子里放上我的信物(比如一片羽毛等等),這樣收件人也就知道這份信是我寄出的了。
這被稱為「對稱性密碼」,也就是加密的人用A方式加密,解密的人用A方式解密,有什麼缺點呢?
如果你經常傳輸,這就很容易被發現了密碼規律,比如我很快就知道你寄信都會帶上一片羽毛,那我以後也可以搞一片羽毛來冒充你了。加上,如果我要給很多人寄信,我就要跟每個人告訴我的加密方式,說不準有一個卧底就把你的加密方式出賣了。
因為互聯網傳輸的對接方數量和頻率非常高,顯然搞個對稱性密碼是不安全的。於是,基於對稱性密碼延伸出「非對稱密碼」的概念。
通俗的解釋:A要給B發信息,B先把一個箱子給A,A收到之後把信放進箱子,然後上鎖,上鎖了之後A自己也打不開,取不出來了,因為鑰匙在B的手裡,這樣即使路上被截取了,別人也打不開箱子看裡面的信息,最後B就能安全地收到A發的信了,並且信息沒有泄露。
現在我們以一個單向的A發信息給B的場景進行深入了解公私鑰工作原理。
總結:
(1)簽名會被任何人獲取,但因為簽名內容不涉及核心內容,被獲取破解是OK的。
(2)重要內容只能接收方解密,任何人獲取了都無法解密。
(3)接收者B只有驗證簽名者是A的信息,才會執行接下來的程序。阿貓阿狗發來的信息不予執行。
搗局者C可能的情況:
(1)他獲取到這條信息是A發出的,但看不明白加密的內容。
(2)他可以也用接受者B的加密方法c向接收者B發信息,但他無法冒充發送者A的簽名,所以B不會接受C的請求。
(2)公私鑰的非對稱加密+session key對稱加密
上一小節解釋的公私鑰加密是標準和安全的,但因為這類非對稱加密對系統運算的需求比較大,在保證安全的前提下,還是盡量希望提升程序響應的時效。所以目前主流應用的另一種加密方式是公私鑰的非對稱加密+session key對稱加密。
(1)當B向A發出臨時有效的加密方法之後,通訊的過程變為了對稱加密;
(2)這類加密方式的核心是時效性,必須在短時間內更新,否則固定的規律容易被獲取破解。
搗局者C可能的情況:
(1)他獲取到B發出的session key的加密文件,無法破解session key是什麼。因為解密方法在A手上;
(2)通過各種手段,C破解出session key的加解密方法,但因為時效已到,session key更新,C徒勞無功;
(3)C在時效內破解出session key,但無法冒充A的簽名。
以上是2種常見的加解密方式,每個開放平台會在概述中最開始介紹API調用的安全加解密方法,這是每個對接過程中必須的準備流程,如微信企業平台在概述中就已介紹利用第2種方法(企業微信命名為access_token)進行加解密傳輸。
以上就是API簽名驗簽和加解密的基本原理,接下來我會繼續更新API的請求方式等問題,同時以企業微信,微信開放平台等大型開放平台的業務解釋各平台支持的現有功能。
綜上,水平有限,如有紕漏,敬請指出。
作者:就是愛睡覺;已任職電商和金融業行業的產品崗位3年時間,目前業務以TO B業務為主,文章是用於記錄自己在產品工作的思考和想法,希望有想法的小夥伴共同交流。
題圖來自Unsplash,基於CC0協議
APP中api加密和服務端解密一般是怎麼做
一般是用戶登錄成功後,伺服器返回給客戶端一個token值(自己定義規則生成一個唯一的識別碼)比如abcdefg1234567一串字元32位左右。
每次客戶端請求api介面時,都帶上這個token值,伺服器端根據演算法生成token值和客戶端傳過來的進行比較,校驗成功才可以去處理邏輯。否則認為是非法請求。
JSP和JAVA對數據進行加密解密
這算哪門子加解密啊。。。。
用md5加密;
或者使用des等也可以;
Java提供很多中加解密演算法,api很容易實現。。你查下api或者百度下就行了。。
java如何用Aes加密和解密
你解密的key必須是加密的key啊
你看看,你解密的時候又KeyGenerator.getInstance(“AES”).generateKey();這是重新搞了一個key啊,當然解不出來了
我估計你這代碼人家原先是寫在一起的吧,加密完了再直接解密給你看,人家只generateKey一次,自然很順利,你分成了兩個例子,居然分別generateKey,自然失敗
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130182.html