Tag: aes

使用Java进行AES加密并使用Javascript进行解密

我正在制作一个需要基于Java的AES加密和基于JavaScript的解密的应用程序。 我使用以下代码进行加密作为基本表单。 public class AESencrp { private static final String ALGO = “AES”; private static final byte[] keyValue = new byte[] { ‘A’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’,’l’, ‘m’, ‘n’, ‘o’, ‘p’}; public static String encrypt(String Data) throws Exception { Key key = generateKey(); Cipher c = Cipher.getInstance(ALGO); c.init(Cipher.ENCRYPT_MODE, key); […]

不同的输出加密CryptoJS和Java代码

我需要从客户端(JavaScript)加密肯定字符串并从服务器端(Java)解密,所以我找到了CryptoJS,我用mi Java Code的相同params /配置编写代码,但输出总是不同的,你有什么想法或发生了什么? 我在NoPadding上使用CBC CryptoJS http://jsfiddle.net/Soldier/gCHAG/ function padString(source) { var paddingChar = ‘ ‘; var size = 16; var x = source.length % size; var padLength = size – x; for (var i = 0; i < padLength; i++) source += paddingChar; return source; } var key = CryptoJS.enc.Hex.parse('0123456789abcdef'); var iv = CryptoJS.enc.Hex.parse('fedcba9876543210'); var […]

JAVA AES 256和公钥加密

我们的一位客户要求我们使用AES 256和公钥加密服务器端(Web服务)加密来自我们的Web服务的消息返回是基于Java的。 客户端可以是java或.Net。 我不熟悉任何加密方法,也找不到任何能让我入门的例子…… 这甚至可以实现AES 256和公钥加密吗? 它是如何工作的(公钥加密)? 请指导我一个让我入门的例子。

服务响应速度慢时间:Java SecureRandom和/ dev / random

我正在尝试调试部署在Tomcat上的应用程序提供的一些慢响应。 现在我专注于SecureRandom和/dev/random (其他一些可能的原因已被调查并排除)。 模式如下: Tomcat重新启动后第一次调用需要30.0 xy秒(即使请求在启动后4分钟到达) 之后,一些调用只需要15.0 pq秒(没有我可以建立的特定模式, pq是TP99中所用的时间近似时间) 服务调用涉及加密和解密( AES / ECB / PKCS5Padding )。 SecureRandom init / repopulating是否可能导致这种情况发生? (尽管有一个用catalina.log编写的日志说”Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [28,760] milliseconds.” ) 另外,为了检查是否正在使用/dev/random或/dev/urandom ,我使用了这个问题的测试。 令我惊讶的是,我没有看到其中任何一个的读取,不像它在链接问题中发生的那样。 这些是strace日志中的最后几行: 3561 lstat(“/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/jsse.jar”, {st_mode=S_IFREG|0644, st_size=258525, …}) = 0 3561 open(“/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/jsse.jar”, O_RDONLY) = 6 3561 stat(“/dev/random”, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 8), […]

在没有无限强度的JCE文件的情况下,AES256加密解密是否可行?

我正在开发的项目有一个需要AES加密和解密的部分。 从我可以查找的所有可能的互联网资源中,很难找到任何AES256加密的参考,而无需从Sun(现在的Oracle网站)下载和安装Unlimited Strength JCE文件。 除了分发相同的法律问题之外,在要求最终用户访问特定网站并下载某些文件,将它们放入目录然后将内容添加到类路径时,它实际上并没有帮助我们。在Windows等! 在互联网上有一些引用BountyCastle的轻量级API,可能不需要JCE文件,但我无法查找一个非常相关的参考或示例来certificate它。 不确定,但这是其他所有编程语言的问题吗? 如果没有安装了那些特定JCE文件的AES 256位加密,那么JNI方法可以帮助吗? 为了详细说明,AES 256加密可以在C / C ++中完成,然后我可以调用那些使用JNI获得所需结果吗? 打包软件(作为jar文件)会引起关注,还是会出现其他问题? 另一个重要的因素是该项目将同时运行Mac和Windows,因此可能是使用C / C ++(特定编译器/解释器版本或任何东西)的限制? 有没有不同的方法来处理这个? 还有其他方法吗?

Java BC SicBlockCipher直接输出等效于c#

我正在用C#实现一些东西,为此我有一个单独的规范和相当清楚的理解我需要做什么,但同时作为参考我有一个Java实现,并希望在这种情况下遵循Java实现尽我所能。 代码涉及加密流,Java源代码在这里相关的行在这里: private final StreamCipher enc; … BlockCipher cipher; enc = new SICBlockCipher(cipher = new AESEngine()); enc.init(true, new ParametersWithIV(new KeyParameter(secrets.aes), new byte[cipher.getBlockSize()])); … … byte[] ptype = RLP.encodeInt((int) frame.type); //Result can be a single byte long … … enc.processBytes(ptype, 0, ptype.length, buff, 0); out.write(buff, 0, ptype.length); //encrypt and write a single byte from the SICBlockCipher […]

图像文件的加密和解密

结合我的另一个问题 ,并在更改了这部分代码之后 FileOutputStream output = new FileOutputStream(“sheepTest.png”); CipherOutputStream cos = new CipherOutputStream(output, pbeCipher); ImageIO.write(input, “PNG”, cos); cos.close(); 从解密部分,我遇到了另一个错误,就是这个 Exception in thread “main” java.lang.IllegalArgumentException: image == null! at javax.imageio.ImageTypeSpecifier.createFromRenderedImage(Unknown Source) at javax.imageio.ImageIO.getWriter(Unknown Source) at javax.imageio.ImageIO.write(Unknown Source) at encypt.com.trial.main(trial.java:82) 当我点击sheepTest.png时,文件为空。 错误在哪里? 任何人都可以帮我解决错误吗? 谢谢。 public class trial { public static void main(String[] arg) throws Exception { // Scanner […]

如何正确使用“PBEWithHmacSHA512AndAES_256”算法?

我正在做一些Java加密,并且无法找到正确使用PBEWithHmacSHA512AndAES_256算法的方法。 加密似乎工作正常,但我无法正确初始化解密密码。 以下是一个演示该问题的简短程序。 特别是,请参阅“问题”评论。 注意:我已经看到了这个非常有用的答案 ,我可以使用该方案让事情发挥作用,但我很想知道我在这里做错了什么。 import java.nio.charset.StandardCharsets; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; public final class CryptQuestion { private static final String ALGORITHM = “PBEWithHmacSHA512AndAES_256”; private static final int ITERATIONS = 1000; // Aside: not sure what is a good number, here. public static void main(final String[] args) […]

‘str = new String(bytes,“UTF8”)’和’bytes = str.getBytes(“UTF8”)’中的字节值不一样

我可以看到它们与我创建字符串的字节不同! 我用“AES / CBC / PKCS5Padding”来获取字符串。 public static void main(String[] args) { try { int randomNumber = CNStationQueueUtil.randInt(0, 99999); String key = “AES_KEY_TAKENUMB”; byte[] bytes = EncryptHelper.encrypt(key, String.format(“%%%d%%%d”, 1001, randomNumber)); String str = new String(bytes, “UTF8”); System.out.println(“str = ” + str); System.out.println(); byte[] utf8Bytes = str.getBytes(“UTF8”); printBytes(utf8Bytes, “utf8Bytes”); } catch (Exception e) { e.printStackTrace(); } […]

Java AES 256加密

我有以下java代码来加密使用64个字符键的字符串。 我的问题是这是AES-256加密吗? String keyString = “C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE6C76A5C1F1716E”; byte[] keyValue = hexStringToByte(keyString); Key key = new SecretKeySpec(keyValue, “AES”); Cipher c1 = Cipher.getInstance(“AES”); c1.init(Cipher.ENCRYPT_MODE, key); String data = “Some data to encrypt”; byte[] encVal = c1.doFinal(data.getBytes()); String encryptedValue = Base64.encodeBase64String(encVal); /* Copied the below code from another post in stackexchange */ public static byte[] hexStringToByte(String hexstr) { byte[] […]