Android與Java后端聯調RSA加密的注意事項

項目中常常會遇到Android前端使用后端提供的公鑰加密數據的場景。需要注意Java后端的java.util.Base64默認Base64標準和Android的android.util.Base64是不一樣的。
此外,RSA算法標準也需要前后端顯式約定。

示例代碼:

import android.util.Base64;import java.nio.charset.StandardCharsets;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.spec.X509EncodedKeySpec;public class RSACrypto {public static final String PUB_KEY = "xxxxxxxxxxxxxx你的后端公鑰";public static PublicKey getPublicKey() throws Exception {byte[] keyBytes = Base64.decode(PUB_KEY, Base64.DEFAULT);X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);KeyFactory keyFactory = KeyFactory.getInstance("RSA");return keyFactory.generatePublic(keySpec);}public static String publicEncrypt(PublicKey publicKey, String encrypted) throws Exception {Cipher cipher = Cipher.getInstance("RSA/None/PKCS1Padding");cipher.init(Cipher.ENCRYPT_MODE, publicKey);byte[] data = cipher.doFinal(encrypted.getBytes(StandardCharsets.UTF_8));return Base64.encodeToString(data, Base64.NO_WRAP);}
}

其中,加密結果用Base64.NO_WRAP編碼,公鑰用Base64.DEFAULT解碼,加密算法是RSA/None/PKCS1Padding。網上關于Android的RSA加密示例代碼很多都沒提到,GPT生成的代碼也有問題,特此記錄。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41211.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41211.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41211.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CDC實時同步進行時遇到不可抗力中斷了怎么辦?

目錄 一、CDC技術的概念 二、CDC技術的應用場景 1.數據復制和同步 2.實時數據倉庫 3.業務過程監控和審計 4.ETL 進程優化 三、CDC與數據管道的關系 1.區別 CDC(Change Data Capture) 數據管道(Data Pipeline) 2.聯系 CDC是數據管道…

《Linux開發筆記》C語言編譯

C語言編譯過程 編譯過程主要分為四步:預處理、編譯、匯編、鏈接 預處理:主要用于查找頭文件、展開宏 編譯:把.i文件編譯成.s文件 匯編:把.s文件匯編為.o文件 鏈接:把多個.o文件鏈接成一個app 以上四個步驟主要由3個命…

JavaScript基礎知識5(對象)

JavaScript基礎知識5(對象) 對象創建對象使用對象字面量使用 new Object() 訪問和修改屬性點表示法方括號表示法 動態添加和刪除屬性添加屬性刪除屬性 對象方法對象的遍歷常用屬性和方法數學常量數學函數三角函數 使用示例生成隨機整數計算圓的面積求最大…

QStringListModel 綁定到QListView

1.QStringListModel 綁定到listView,從而實現MV模型視圖 2.通過QStringListModel的新增、刪除、插入、上下移動,listView來展示出來 3.下移動一行,傳入curRow2 的個人理解 布局 .h聲明 private:QStringList m_strList;QStringListModel *m_m…

Matlab|基于改進鯨魚優化算法的微網系統能量優化管理matlab-源碼

目錄 一、主要內容 二、部分代碼 三、運行結果 四、下載鏈接 一、主要內容 該程序為《基于改進鯨魚優化算法的微網系統能量優化管理》源碼,主要內容如下: 針對包含多種可再生能源的冷熱電聯供型微網系統的能量優化問題,為了優化其運行過程…

中級職稱如何查詢真假呢?

關于中級職稱如何查詢真假,大家都會有疑問,辦到職稱的人員肯定是想查一查手里的證書,那么沒有證書的人員也想了解一下,今天甘建二告訴大家幾個通俗的職稱查詢方式: 1.電話查詢(以前辦理職稱是這種查詢方式…

20W+喜愛的Pathview網頁版 | 整合表達譜數據KEGG通路可視化

Pathview網站簡介 網址:https://pathview.uncc.edu/ 前段時間介紹了一個R包 — Pathview。它可以整合表達譜數據并可視化KEGG通路,操作是先自動下載KEGG官網上的通路圖,然后整合輸入數據對通路圖進行再次渲染。從而對KEGG通路圖進行一定程度…

uniapp+nodejs實現小程序支付

1.準備商戶號、企業級小程序(或者個體工商戶級別的) 2.在小程序端調用uni.login獲取code,傳遞給后端 uni.login({success: loginRes > {uni.request({url: "http://127.0.0.1:3003/wxpay/pay",data: {code: loginRes.code},method: "get",…

RedHat9 | kickstart無人值守批量安裝

一、知識補充 kickstart Kickstart是一種用于Linux系統安裝的自動化工具,它通過一個名為ks.cfg的配置文件來定義Linux安裝過程中的各種參數和設置。 kickstart的工作原理 Kickstart的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種參數,…

漏洞分析 | PHP CGI Windows平臺遠程代碼執行漏洞(CVE-2024-4577)

漏洞概述 PHP CGI(Common Gateway Interface)是在Windows平臺上運行PHP的一種方式。CGI是一種標準接口,允許Web服務器與外部應用程序(如PHP腳本)進行交互,從而生成動態網頁內容。 近期,PHP發布…

Request safe_get 小工具

接口安全獲取請求參數小工具( python) flask import logging import traceback from flask import (Blueprint, request, Response, jsonify, g, send_file)def safe_get(req: request, attr: str, defaultNone):try:if attr in req.form:return req.f…

拍攝泡咖啡的劇本!

泡咖啡的過程可以是一種放松和享受的儀式,同時也是一個記錄生活美好瞬間的好機會。以下是一些步驟和提示,幫助您記錄泡咖啡的過程: 1. **準備材料**: 確保您有新鮮的咖啡豆、磨豆機、咖啡壺、濾紙、熱水和杯子。 2. **選擇音樂**&…

Logstash安裝插件失敗的問題

Logstash安裝插件失敗的問題 安裝 logstash-output-jdbc 失敗 報錯為: Unable to download data from https://rubygems.org - Net::OpenTimeout: Failed to open TCP connection to rubygems.org:443 (execution expired) (https://rubygems.org/latest_specs.4.…

【算法 - 哈希表】兩數之和

這里寫自定義目錄標題 兩數之和題目解析思路解法一 :暴力枚舉 依次遍歷解法二 :使用哈希表來做優化 核心邏輯為什么之前的暴力枚舉策略不太好用了?所以,這就是 這道題選擇 固定一個數,再與其前面的數逐一對比完后&…

Linux系統(CentOS)安裝iptables防火墻

1,先檢查是否安裝了iptables 檢查安裝文件-執行命令:rpm -qa|grep iptables 檢查安裝文件-執行命令:service iptables status 2,如果安裝了就卸裝(iptables-1.4.21-35.el7.x86_64 是上面命令查出來的版本) 執行命令&#xff1a…

藍牙信標和藍牙標簽我們如何區分,區分方法有哪些?

藍牙信標和藍牙標簽其實是兩種不同的技術,很多人可能會把藍牙信標和藍牙標簽搞混,因為區分不開來,但實際上,區分這兩種技術也很簡單,因為它們各自都有不一樣的特性,通過這些特性,我們也能正常區…

相機光學(二十四)——CRA角度

CRA角度 0.參考資料1.什么是CRA角度2.為什么 CRA 會導致luma shading3.為什么 CRA 會導致color shading4.CRA相差過大的具體表現5.CRA Matching6.怎樣選擇sensor的CRA 0.參考資料 1.芯片CRA角度與鏡頭的匹配關系(一) ??2.芯片CRA角度與鏡頭選型的匹配關…

爬蟲進階:Selenium與Ajax的無縫集成

爬蟲與Ajax的挑戰 Ajax(Asynchronous JavaScript and XML)允許網頁在不重新加載整個頁面的情況下與服務器交換數據并更新部分內容。這為用戶帶來了更好的體驗,但同時也使得爬蟲在抓取數據時面臨以下挑戰: 動態內容加載&#xff…

go語言 函數和包

go語言 函數和包 一、函數 在Go語言中,函數是執行特定任務的自包含代碼塊。 1.函數的定義 函數通過func關鍵字定義,格式如下: func 函數名(形參 形參類型, 形參 形參類型) 返回值類型 {函數體return 返回值 }2.基礎函數類型 無參數無返回…

vue中數組出現__ob__: Observer屬性,導致不能正確使用問題解決

直接上圖,如下圖,數組中出現__ob__: Observer屬性,導致無法取值。 解決方案為:JSON.parse(JSON.stringify(數組變量名))深拷貝數組,重新生成一個可枚舉數組。 // 處理代碼如let tempIds JSON.parse(JSON.stringify(i…