看需求。。。。。。介面本身並無加密
~
~
~
② java加密的幾種方式
朋友你好,很高興為你作答。
首先,Java加密能夠應對的風險包括以下幾個:
1、核心技術竊取
2、核心業務破解
3、通信模塊破解
4、API介面暴露
本人正在使用幾維安全Java加密方式,很不錯,向你推薦,希望能夠幫助到你。
幾維安全Java2C針對DEX文件進行加密保護,將DEX文件中標記的Java代碼翻譯為C代碼,編譯成加固後的SO文件。默認情況只加密activity中的onCreate函數,如果開發者想加密其它類和方法,只需對相關類或函數添加標記代碼,在APK加密時會自動對標記的代碼進行加密處理。
與傳統的APP加固方案相比,不涉及到自定義修改DEX文件的載入方式,所以其兼容性非常好;其次Java函數被完全轉化為C函數,直接在Native層執行,不存在Java層解密執行的步驟,其性能和執行效率更優。
如果操作上有不明白的地方,可以聯系技術支持人員幫你完成Java加密。
希望以上解答能夠幫助到你。
③ javaweb的數據傳輸加密,怎麼整比較好
現在流行的是用RSA進行加密,然後傳輸。
也有很多人直接用md5進行簽名,也說不清楚,感覺像是加密了。
至於傳輸,給傳輸通道加密,好像有點大動干戈的意思。還是不要考慮了
④ java給別人提供介面,介面安全怎麼保證
我們在開發過程中,肯定會有和第三方或者app端的介面調用。在調用的時候,下面的方法可以來防止非法鏈接或者惡意攻擊。
一、簽名
根據用戶名或者用戶id,結合用戶的ip或者設備號,生成一個token。在請求後台,後台獲取http的head中的token,校驗是否合法(和資料庫或者Redis中記錄的是否一致,在登錄或者初始化的時候,存入資料庫/redis)
在使用Base64方式的編碼後,Token字元串還是有20多位,有的時候還是嫌它長了。由於GUID本身就有128bit,在要求有良好的可讀性的前提下,很難進一步改進了。那我們如何產生更短的字元串呢?還有一種方式就是較少Token的長度,不用GUID,而採用一定長度的隨機數,例如64bit,再用Base64編碼表示:
varrnd =newRandom();
vartokenData =userIp+userId;
rnd.NextBytes(tokenData);
vartoken =Convert.ToBase64String(tokenData).TrimEnd('=');
由於這里只用了64bit,此時得到的字元串為Onh0h95n7nw的形式,長度要短一半。這樣就方便攜帶多了。但是這種方式是沒有唯一性保證的。不過用來作為身份認證的方式還是可以的(如網盤的提取碼)。
二、加密
客戶端和伺服器都保存一個秘鑰,每次傳輸都加密,服務端根據秘鑰解密。
客戶端:
1、設置一個key(和伺服器端相同)
2、根據上述key對請求進行某種加密(加密必須是可逆的,以便伺服器端解密)
3、發送請求給伺服器
伺服器端:
1、設置一個key
2、根據上述的key對請求進行解密(校驗成功就是「信任」的客戶端發來的數據,否則拒絕響應)
3、處理業務邏輯並產生結果
4、將結果反饋給客戶端
三、第三方支持
比如springsecurity-oauth
⑤ java 中 url地址欄里傳的數字值,如何加密
現在很多加密演算法的 比如你可以使用XXTea加密。前端使用post請求,請求之前將你要傳的參數 組合成一個json格式,之後進行XXTea加密,加密完之後 將加密得到的字元串放到post 請求數據中。後台加一個攔截器,拿到你的請求地址以及加密字元串,然後將字元串解密 得到一個map,再通過request得到的ParamRequestWrapper 將解密後的參數放回去,這樣你的方法就可以照常拿到數據了。
⑥ JAVA客戶端與C#伺服器端之間的數據傳輸加密用什麼加密方式 要求每次加密結果密文都不同。
常用的加密演算法有DES、AES、MD5等不管採用哪種加密方法,加密後的內容都會大大增加,這樣就給網路傳輸帶來影響如果不增加加密後的內容,可以採用位運算的加密方法
⑦ java最常用的幾種加密演算法
簡單的Java加密演算法有:
第一種. BASE
Base是網路上最常見的用於傳輸Bit位元組代碼的編碼方式之一,大家可以查看RFC~RFC,上面有MIME的詳細規范。Base編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base來將一個較長的唯一標識符(一般為-bit的UUID)編碼為一個字元串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,採用Base編碼具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。
第二種. MD
MD即Message-Digest Algorithm (信息-摘要演算法),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法),主流編程語言普遍已有MD實現。將數據(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD的前身有MD、MD和MD。
MD演算法具有以下特點:
壓縮性:任意長度的數據,算出的MD值長度都是固定的。
容易計算:從原數據計算出MD值很容易。
抗修改性:對原數據進行任何改動,哪怕只修改個位元組,所得到的MD值都有很大區別。
弱抗碰撞:已知原數據和其MD值,想找到一個具有相同MD值的數據(即偽造數據)是非常困難的。
強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD值,是非常困難的。
MD的作用是讓大容量信息在用數字簽名軟體簽署私人密鑰前被」壓縮」成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的十六進制數字串)。除了MD以外,其中比較有名的還有sha-、RIPEMD以及Haval等。
第三種.SHA
安全哈希演算法(Secure Hash Algorithm)主要適用於數字簽名標准(Digital Signature Standard DSS)裡面定義的數字簽名演算法(Digital Signature Algorithm DSA)。對於長度小於^位的消息,SHA會產生一個位的消息摘要。該演算法經過加密專家多年來的發展和改進已日益完善,並被廣泛使用。該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。散列函數值可以說是對明文的一種「指紋」或是「摘要」所以對散列值的數字簽名就可以視為對此明文的數字簽名。
SHA-與MD的比較
因為二者均由MD導出,SHA-和MD彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:
對強行攻擊的安全性:最顯著和最重要的區別是SHA-摘要比MD摘要長 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD是^數量級的操作,而對SHA-則是^數量級的操作。這樣,SHA-對強行攻擊有更大的強度。
對密碼分析的安全性:由於MD的設計,易受密碼分析的攻擊,SHA-顯得不易受這樣的攻擊。
速度:在相同的硬體上,SHA-的運行速度比MD慢。
第四種.HMAC
HMAC(Hash Message Authentication Code,散列消息鑒別碼,基於密鑰的Hash演算法的認證協議。消息鑒別碼實現鑒別的原理是,用公開函數和密鑰產生一個固定長度的值作為認證標識,用這個標識鑒別消息的完整性。使用一個密鑰生成一個固定大小的小數據塊,即MAC,並將其加入到消息中,然後傳輸。接收方利用與發送方共享的密鑰進行鑒別認證等。
⑧ java jdbc連接mysql資料庫 如何實現用戶名密碼以及傳輸數據的加密
你的問題很不清晰。
java jdbc連接mysql資料庫
如何實現用戶名密碼以及傳輸數據的加密
你是要加密保存的數據,還是加密連接信息?
如果是連接串中的用戶名與密碼進行加密。恐怕用起來很不方便。
我就當你是要把入庫的信息加密。
下邊是DES加密的方法。將數據進行DES加密,將加密內容轉為16進制內容表示。
--------------------------------------------------------------------------------------------
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class DesTest {
public static void main(String[] args) throws Exception {
// 要加密的數據
String str = "123456";
// 密鑰
String strKey = "86337898";
SecretKeySpec key = new SecretKeySpec(strKey.getBytes(), "DES");
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] byteFina = cipher.doFinal(str.getBytes());
String strFinal = byte2Hex(byteFina);
System.out.println(strFinal);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decByte = hex2Byte(strFinal);
byte[] result = cipher.doFinal(decByte);
System.out.println(new String(result));
}
public static String byte2Hex(byte[] buff) {
String hs = "";
for (int i = 0; i < buff.length; i++) {
String stmp = (Integer.toHexString(buff[i] & 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
}
return hs;
}
public static byte[] hex2Byte(String str) {
int len = str.length() / 2;
byte[] buff = new byte[len];
int index = 0;
for (int i = 0; i < str.length(); i += 2) {
buff[index++] = (byte) Integer
.parseInt(str.substring(i, i + 2), 16);
}
return buff;
}
}
⑨ javajdbc連接mysql資料庫如何實現用戶名密碼以及傳輸數據的加密
如果jdbc和mysql都支持 SSL那通過配置就可以了
如果不支持,那也可以自己來實現。
實現思路:
1、在資料庫的主機上運行一個java服務,用來轉發數據這個服務我們成為A服務
2、客戶端並不直接訪問資料庫,而訪問A服務,客戶端和A服務之間的傳輸代碼由用戶自己完成,當然可以加密。走套接字,走http,或者其他什麼都是可以的。