javaopenssl加密
很不幸,就以我的知識范圍,純粹的JS無法做到百分百的安全。理由如下:
現在的瀏覽器端可以直接看到你的JS代碼,JS代碼都是明文的。盡管你可以壓縮,混淆,但是也是加大hack的難度,無法徹底對瀏覽器不可見。既然你的代碼都被看見了,那麼Hash,加密都是扯淡了。
對內容加密可以使用HTTPS,這點不假。但是這僅僅能夠抵抗抓包工具,但是通過瀏覽器的開發工具,仍然能夠看到你的請求內容,格式。那麼就可以按照你的格式偽造請求。我們就可以通過偽造請求修改某社交網站的用戶設置。
結論:純粹JS看起來無法滿足你的需求,但是可以使用object標簽,自己開發控制項進行數據加密,這點事可以的。但是這就超出了JS的范圍。並且Object的這個話題太大,我沒辦法給你展開,你自己研究下吧
2. java 的cipher AES/CBC/PKCS5Padding 加密後,使用openssl的AES_cbc_encrypt無法解密
你看一下這個例子吧。可以參考下面的地址:前面加上http,把句號改成點。
likang。me/blog/2013/06/05/python-pycrypto-aes-ecb-pkcs-5/
# -*- coding: utf-8 -*-
from Crypto.Cipher import AES
import os
BS = AES.block_size
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
unpad = lambda s : s[0:-ord(s[-1])]
key = os.urandom(16) # the length can be (16, 24, 32)
text = 'to be encrypted'
cipher = AES.new(key)
encrypted = cipher.encrypt(pad(text)).encode('hex')
print encrypted # will be something like ''
decrypted = unpad(cipher.decrypt(encrypted.decode('hex')))
print decrypted # will be 'to be encrypted'
3. java和openssl生成sm2區別
區別如下:
1.客戶端是Java開發的,服務端是C開發的,之間使用了SM2演算法進行密鑰交換。
2.Java端是在網上找的一個比較流行的基於BC的SM2實現,依賴的bcprov-jdk15on,版本1.56。C端是用的OpenSSL。
3.服務端和客戶端聯調時發現了很多問題,SM2演算法的公鑰加解密一直沒法調通,但Java應用加密的數據可以自己解密成功,C應用加密的數據自己也可以解密成功。
4. java中怎麼獲取jks證書文件中的內容
JavaKeyStore的類型JKS和JCEKS是Java密鑰庫(KeyStore)的兩種比較常見類型(我所知道的共有5種,JKS,JCEKS,PKCS12,BKS,UBER)。JKS的Provider是SUN,在每個版本的JDK中都有,JCEKS的Provider是SUNJCE,1.4後我們都能夠直接使用它。JCEKS在安全級別上要比JKS強,使用的Provider是JCEKS(推薦),尤其在保護KeyStore中的私鑰上(使用TripleDes)。PKCS#12是公鑰加密標准,它規定了可包含所有私鑰、公鑰和證書。其以二進制格式存儲,也稱為PFX文件,在windows中可以直接導入到密鑰區,注意,PKCS#12的密鑰庫保護密碼同時也用於保護Key。BKS來自BouncyCastleProvider,它使用的也是TripleDES來保護密鑰庫中的Key,它能夠防止證書庫被不小心修改(Keystore的keyentry改掉1個bit都會產生錯誤),BKS能夠跟JKS互操作,讀者可以用Keytool去TryTry。UBER比較特別,當密碼是通過命令行提供的時候,它只能跟keytool交互。整個keystore是通過PBE/SHA1/Twofish加密,因此keystore能夠防止被誤改、察看以及校驗。以前,SunJDK(提供者為SUN)允許你在不提供密碼的情況下直接載入一個Keystore,類似cacerts,UBER不允許這種情況。證書導入Der/Cer證書導入:要從某個文件中導入某個證書,使用keytool工具的-import命令:1keytool-import-filemycert.der-keystoremykeystore.jks如果在-keystore選項中指定了一個並不存在的密鑰倉庫,則該密鑰倉庫將被創建。如果不指定-keystore選項,則預設密鑰倉庫將是宿主目錄中名為.keystore的文件。如果該文件並不存在,則它將被創建。創建密鑰倉庫時會要求輸入訪問口令,以後需要使用此口令來訪問。可使用-list命令來查看密鑰倉庫里的內容:1keytool-list-rfc-keystoremykeystore.jksP12格式證書導入:keytool無法直接導入PKCS12文件。第一種方法是使用IE將pfx證書導入,再導出為cert格式文件。使用上面介紹的方法將其導入到密鑰倉庫中。這樣的話倉庫裡面只包含了證書信息,沒有私鑰內容。第二種方法是將pfx文件導入到IE瀏覽器中,再導出為pfx文件。新生成的pfx不能被導入到keystore中,報錯:keytool錯誤:java.lang.Exception:所輸入的不是一個X.509認證。新生成的pfx文件可以被當作keystore使用。但會報個錯誤asunknownattr1.3.6.1.4.1.311.17.1,查了下資料,說IE導出的就會這樣,使用Netscape就不會有這個錯誤.第三種方法是將pfx文件當作一個keystore使用。但是通過微軟的證書管理控制台生成的pfx文件不能直接使用。keytool不認此格式,報keytool錯誤:java.io.IOException:。需要通過OpenSSL轉換一下:1opensslpkcs12-inmycerts.pfx-outmycerts.pem2opensslpkcs12-export-inmycerts.pem-outmykeystore.p12通過keytool的-list命令可檢查下密鑰倉庫中的內容:1keytool-rfc-list-keystoremykeystore.p12-storetypepkcs12這里需要指明倉庫類型為pkcs12,因為預設的類型為jks。這樣此密鑰倉庫就即包含證書信息也包含私鑰信息。P7B格式證書導入:keytool無法直接導入p7b文件。需要將證書鏈RootServer.p7b(包含根證書)導出為根rootca.cer和子rootcaserver.cer。將這兩個證書導入到可信任的密鑰倉庫中。1keytool-import-aliasrootca-trustcacerts-filerootca.cer-keystoretestkeytrust.jks遇到是否信任該證書提示時,輸入y1keytool-import-aliasrootcaserver-trustcacerts-filerootcaserver.cer-keystoretestkeytrust.jks總結P12格式的證書是不能使用keytool工具導入到keystore中的TheSun'sPKCS12Keystore對從IE和其他的windows程序生成的pfx格式的證書支持不太好.P7B證書鏈不能直接導入到keystore,需要將裡面的證書導出成cer格式,再分別導入到keystore。