Tag: 加密

Java – 使用预共享公钥并且没有信任存储麻烦的流量的非对称加密

我正在尝试使用RSA预共享密钥进行通信,理想情况下, 不涉及信任库的恶作剧 设置基本上是这样的: 客户端有一个applet,服务器端有一个servlet(duh :)) applet有servlet的RSA公钥(Spub)硬编码。 servlet有自己的RSA私钥(Spriv)硬编码。 他们的applet生成一个随机的AES 256密钥(会话密钥),用servlet的公钥(它已硬编码)加密它,通过TCP套接字连接到servlet,并将RSA加密的密钥发送到servlet,后者继续解密会话密钥,只要此套接字连接持续,就可以将其用于与此applet的任何进一步通信。 我宁愿这样做而不会弄乱信任库等(毕竟,它是一个相对简单的设置,允许预共享硬编码的公钥) 关于我应该从哪里开始教育自己的任何建议?

用Java中的AES算法加密

我创建了一个包p,包含一些整数和布尔值。 包如下: TCPPacket p=new TCPPacket(481,516,23,42,true,false,false,false,false,false,false,false,10,10); 如何用Java加密数据包?

Java中的AES-256-CBC

我正在尝试编写一个简单的Java程序,它将使用AES-256-CBC加密纯文本。 有课: import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class AesCBC { private byte[] key; private byte[] iv; private static final String ALGORITHM=”AES”; public AesCBC(byte[] key, byte[] iv) { this.key = key; this.iv = iv; } public byte[] encrypt(byte[] plainText) throws Exception{ SecretKeySpec secretKey=new SecretKeySpec(key,ALGORITHM); IvParameterSpec ivParameterSpec=new IvParameterSpec(iv); Cipher cipher=Cipher.getInstance(“AES/CBC/PKCS5Padding”); cipher.init(Cipher.ENCRYPT_MODE,secretKey,ivParameterSpec); return cipher.doFinal(plainText); } public […]

PHP和Java之间的加密

我当时希望加密PHP服务器和Java客户端之间的数据。 单独的代码工作正常,我想在PHP服务器上坚持使用OpenSSL。 当你在尝试解码PHP加密字符串时遇到错误时,你们中是否有人看到我在这里丢失的任何内容: [删除非工作代码] 更新 – 我能够使用openssl。 这是使用PHP和Java文件的GIT repo。 https://github.com/chaudhuri-ab/CrossPlatformCiphers

使用IGE解密Java AES-256

我正试图用IGE解密AES-256。 但我不知道如何使用256位密钥。 在代码密钥中 – byte [] , 长度 == 32; 四 。 长度 == 32; BlockSize == 16 Cipher cipher = Cipher.getInstance(“AES/ECB/NoPadding”); cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(key, “AES”)); Xprev = java.util.Arrays.copyOfRange(IV, 0, BlockSize); Yprev = java.util.Arrays.copyOfRange(IV, BlockSize, IV.length); Decripted = new byte[0]; for (int i = 0; i < Message.length; i += BlockSize) { Y = java.util.Arrays.copyOfRange(Message, […]

已安装JCE Unlimited Strength但不支持AES 256

我已经为JAVA_HOME \ lib \ security安装了JCE Unlimited strength 但是,我仍然得到128 Cipher.getMaxAllowedKeyLength(“AES”) 。 我想知道我是否在错误的地方安装了JCE。 我在2个地方安装了Java。 C:\ Program Files \ Java \ jre7 C:\开发\的Java \ jdk1.6.0_21 谁能告诉我安装JCE无限力量的正确位置在哪里? 非常感谢您的帮助。 我的代码: KeyGenerator generator = KeyGenerator.getInstance(“AES”); generator.init(256); SecretKey secretKey = generator.generateKey(); byte[] raw= secretKey.getEncoded(); SecretKeySpec sskey= new SecretKeySpec(raw, “AES”); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”); if (mode == Cipher.ENCRYPT_MODE) { Cipher.getMaxAllowedKeyLength(“AES”)); cipher.init(Cipher.ENCRYPT_MODE, sskey); CipherInputStream […]

演示如何使用RSA公钥系统来交换实现机密性和完整性/身份validation的消息

我正在尝试演示使用RSA公钥系统来交换实现机密性和完整性/身份validation的消息。 我试图在客户端加密消息并将此信息发送到服务器端进行解密。 我遇到的问题是我的代码没有解密。 它给了我以下错误: javax.crypto.BadPaddingException: Data must start with zero at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:308) at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:255) at com.sun.crypto.provider.RSACipher.a(DashoA13*..) at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..) at javax.crypto.Cipher.doFinal(DashoA13*..) at PKServer.decryptMessage(PKServer.java:36) at PKServer.main(PKServer.java:69) 公钥客户端代码: import java.io.*; import java.net.*; import java.security.*; import javax.crypto.*; public class PKClient { public static final int kBufferSize = 8192; public static void main(String[] args) throws Exception { try { // […]

如何使用密码解码字符串?

我有一个密码需要通过网络传输。 因此,对于安全方面,我已经从发送端编码并在接收端进行解码。 但我的朋友仍然可以在网络上破解密码,因为他知道我如何编码密码字符串。 这是我的代码 package org; import java.util.Base64; public class EncodingString { public static void main(String[] args){ String str = “I’m Encoding then decoding”; byte[] bytesEncoded = Base64.getEncoder().encode(str.getBytes()); System.out.println(bytesEncoded); String EncodedPassword = new String(bytesEncoded); System.out.println(“ecncoded value is ” + EncodedPassword); byte[] valueDecoded= Base64.getDecoder().decode(bytesEncoded); System.out.println(valueDecoded); String DecodedPassword = new String(valueDecoded); System.out.println(“Decoded value is ” + DecodedPassword); […]

Java BouncyCastle Cast6Engine(CAST-256)加密

我正在尝试实现一个接收字符串的函数,并返回CAST-256中String的编码值。 以下代码是我在BoncyCastle官方网页上的示例后实现的( http://www.bouncycastle.org/specifications.html ,第4.1点)。 import org.bouncycastle.crypto.BufferedBlockCipher; import org.bouncycastle.crypto.CryptoException; import org.bouncycastle.crypto.engines.CAST6Engine; import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher; import org.bouncycastle.crypto.params.KeyParameter; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.util.encoders.Base64; public class Test { static{ Security.addProvider(new BouncyCastleProvider()); } public static final String UTF8 = “utf-8”; public static final String KEY = “CLp4j13gADa9AmRsqsXGJ”; public static byte[] encrypt(String inputString) throws UnsupportedEncodingException { final BufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new CAST6Engine()); […]

使用AES算法进行加密和解密

我正在为我的应用程序制作加密/解密模块。 我按照本教程 它没有给出任何错误,也没有显示输出。 日志文件 07-23 07:29:06.480: W/System.err(795): javax.crypto.BadPaddingException: pad block corrupted 07-23 07:29:06.629: W/System.err(795): at com.android.org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(BaseBlockCipher.java:710) 07-23 07:29:06.629: W/System.err(795): at javax.crypto.Cipher.doFinal(Cipher.java:1111) 07-23 07:29:06.660: W/System.err(795): at com.example.generatesha384.AESHelper.decrypt(AESHelper.java:52) 07-23 07:29:06.690: W/System.err(795): at com.example.generatesha384.AESHelper.decrypt(AESHelper.java:25) 07-23 07:29:06.690: W/System.err(795): at com.example.generatesha384.MainActivity.onCreate(MainActivity.java:24) 07-23 07:29:06.700: W/System.err(795): at android.app.Activity.performCreate(Activity.java:5133) 07-23 07:29:06.730: W/System.err(795): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 07-23 07:29:06.730: W/System.err(795): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 07-23 07:29:06.770: W/System.err(795): at […]