草庐IT

java - AES java编码,ruby解码

我正在尝试用java对数据进行AES编码,通过网络发送它并用ruby​​对其进行解码。适用于基本字符串,但一旦字符串的长度为16个字节或更多,我在解码的ruby​​字符串的编码处就会出现垃圾。我想这与填充有关(虽然不确定,因为它甚至会影响精确大小为16的字符串)我尝试使用PKCS或只是在我的字符串末尾添加空格以匹配准确的长度,但没有成功谁也能解释为什么我必须在ruby​​中做一个“aes-256-cbc”,知道我的java代码使用aes128?在ruby​​中尝试aes-128-cbc不适用于任何字符串非常感谢任何帮助这是我的基本代码Javabyte[]raw=key.getBytes

java - 使用 JAVA 使用 AES 加密大文件

我已经用小于此(10mb、100mb、500mb)的文件测试了我的代码,并且加密有效。但是,我遇到了大于1gb的文件的问题。我生成了一个大文件(大约2gb),我想使用JAVA使用AES对其进行加密,但我遇到了这个错误:“线程“main”中的异常java.lang.OutOfMemoryError:Java堆空间”我试过使用-Xmx8G增加可用内存,但没有成功。我的部分代码如下FileselectedFile=newFile("Z:\\dummy.txt");Pathpath=Paths.get(selectedFile.getAbsolutePath());byte[]toencryp

java - 比播种 SecureRandom 更好的创建 AES key 的方法

我需要将加密数据从Java客户端发送到C#服务器。现在我正在学习如何使用AES(要求)加密数据。按照这个接受的答案androidencryption/decryptionwithAES我正在执行以下操作:byte[]keyStart="qweroiwejrwoejlsifeoisrn".getBytes();//Randomcharacterstringbyte[]toEncrypt=myMessageString.getBytes();keyGen=KeyGenerator.getInstance("AES");sr=SecureRandom.getInstance("SHA1PRN

java - 从 AES 加密字符串中删除\r 和\n

我正在使用AES加密字符串,但加密后的字符串末尾包含\n和\r。publicclassAESImpl{privatestaticStringdecryptedString;privatestaticStringencryptedString;publicstaticvoidmain(String[]args)throwsNoSuchAlgorithmException,IOException,ClassNotFoundException{StringstrToEncrypt="Thistexthastobeencrypted";SecretKeysecretKey=generateSe

【前端知识】前端加密算法(base64、md5、sha1、escape/unescape、AES/DES)

前端加密算法一、base64加解密算法简介:Base64算法使用64个字符(A-Z、a-z、0-9、+、/)来表示二进制数据的64种可能性,将每3个字节的数据编码为4个可打印字符。如果字节数不是3的倍数,将会进行填充。优点:可打印字符:Base64编码后的数据只包含可打印字符,不会出现乱码或无法传输的情况。广泛支持:Base64被广泛支持于各种编程语言和网络协议中,可以方便地应用于各种场景。简单易用:Base64的编码和解码很简单,只需要少量的代码即可完成。缺点:数据膨胀:Base64编码后的数据通常比原始数据要大约1/3左右,这意味着在传输大量数据时会增加传输的时间和带宽消耗。不加密:Bas

java - 使用 AES/CTR 模拟流密码

我正在编写一个应用程序服务器,我决定使用AES128/CTR/NoPadding来保护连接,因为它被认为足够安全而不必将字节扩展到block边界,我认为它非常适合到逻辑上是无缝流的TCP。问题是Cipher.update()在它有一个完整的16字节block之前不会返回加密block,因为CTR基本上是基于block密码虽然模拟流密码。我应该从tcp套接字读取数据并在消息到达时立即处理消息,但我无法检索最新的block,因为它仍在构建并且其大小小于16字节。我等不及了,因为我们不知道下一条消息何时发送。当然,我可以调用Cipher.doFinal()来获取剩余部分,但这意味着流(连接)

java - 如何在 Java 中使用 AES 加密数据

我想在java中使用AES(cbc)加密一段数据,我想使用我自己的IV,它保存在一个字节数组中,我自己的key保存在一个字节数组中。我该怎么做?我正在搜索它以查找有关该主题的教程。 最佳答案 This可能是我找到的关于该主题的最佳指南。它以简单的方式解释了基础知识,一次一个概念。 关于java-如何在Java中使用AES加密数据,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/51

1 个 block (16 字节)的 Java AES-128 加密返回 2 个 block (32 字节)作为输出

我使用以下代码进行AES-128加密来编码一个16字节的block,但编码值的长度给出了2个32字节的block。我错过了什么吗?plainEnc=AES.encrypt("thisisapassword!");importjava.security.*;importjava.security.spec.InvalidKeySpecException;importjavax.crypto.*;importsun.misc.*;publicclassAES{privatestaticfinalStringALGO="AES";privatestaticfinalbyte[]keyValu

java - -128 在 Java 中作为二进制文字

基于java中的byte类型是带符号的8位two'scomplement整数,为什么第二种声明字节的方法不起作用?byteok=-128;bytenotok=0b10000000;我的理解是1000000应该是-128但java指示上面的notok变量应该是int而不是byte 最佳答案 0b10000000是一个int文字(=0b00000000000000000000000010000000),等于+128。byte占8位,不能表示+128。但是,您可以按如下方式实现:bytenotok=(byte)0b10000000;

Java AES CBC解密

PHP加密函数$privateKey="1234567812345678";$iv="1234567812345678";$data="Teststring";$encrypted=mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$privateKey,$data,MCRYPT_MODE_CBC,$iv);echo(base64_encode($encrypted));Result:iz1qFlQJfs6Ycp+gcc2z4w==当我尝试使用下面的函数在Java中解密此结果时,我得到的只是ì��š@ÔBKxnfÈ~¯Ô'M而我期待的是“测试字符串”。有什么想法我错