相关疑难解决方法(0)

用Java解码Base64数据

我有一个Base64编码的图像.在Java中解码它的最佳方法是什么?希望仅使用Sun Java 6附带的库.

java base64

463
推荐指数
13
解决办法
71万
查看次数

Java相当于OpenSSL AES CBC加密

我不是加密技术专家,特别是由于OpenSSL有很多缺少的文档,我不知道如何解决这个问题.

我有一个外部系统,希望接收加密的消息.提供的唯一示例以这种方式使用OpenSSL:

$ openssl enc -aes-256-cbc -a -in t.txt -k testpass
U2FsdGVkX1/RUdaSJKRXhHv3zUyTsQwu5/ar2ECKDlrNyH5GL4xRR4fgxkiWqkS1
cQstcoSIgWfRPSOFj/5OtdNLeNXiVR6MxSKJ+NvS9LyUD8+Rg6XIcYUvxR4gHi3w
DWT44LAMCpRAh1Q0t4Z2g7rwb0D05T6ygLaWvB5zD/xGZD3brTqSlWmiJb9Imgda
M6soZO7BhbYdqWqEUl5r6+EbkD21f6L3NX3hJFo+BJ+VFctiAlBO8NwT5l4ogo/s
GErm8gqRr57XoX/kvKAimg==
Run Code Online (Sandbox Code Playgroud)

t.txt文件包含这个字符串在一行:

AMOUNT=10&TID=#19:23&CURRENCY=EUR&LANGUAGE=DE&SUCCESS_URL=http://some.url/sucess&ERROR_URL=http://some.url/error&CONFIRMATION_URL=http://some.url/confirm&NAME=customer full name`
Run Code Online (Sandbox Code Playgroud)

我找到另一个问题,我已经能够使用以下代码进行加密:

String password = "passPhrase";
String salt = "15charRandomSalt";
int iterations = 100;

/* Derive the key, given password and salt. */
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(Charset.forName("UTF8")), iterations, 256);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");

/* Encrypt the message. */
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secret);
AlgorithmParameters …
Run Code Online (Sandbox Code Playgroud)

java encryption openssl cryptography

9
推荐指数
2
解决办法
1万
查看次数

编码Base64找不到符号错误

当我尝试在终端中编译它时,它给了我一个错误.它打印出这个错误:

-bash-4.1$ javac CPS3498/HW_Ch2/encrypt.java
CPS3498/HW_Ch2/encrypt.java:9: cannot find symbol
symbol  : class Base64
location: package java.util
import java.util.Base64;
                ^
CPS3498/HW_Ch2/encrypt.java:61: cannot find symbol
symbol  : variable Base64
location: class encrypt
        String encryptedValue = Base64.getEncoder().encodeToString(encVal);
                                ^
2 errors
Run Code Online (Sandbox Code Playgroud)

我完全迷失了如何解决这个问题.我尝试过不同的java实用程序进行编译,它们都给了我几乎相同的错误.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

//create public class encrypt
public class encrypt {
    //algorithm AES 128 with a secret key
    private static final String ALGO = "AES";
    private static final …
Run Code Online (Sandbox Code Playgroud)

java encoding encoder decode decoder

7
推荐指数
3
解决办法
2万
查看次数

ImageIO.read无法读取ByteArrayInputStream(图像处理)

我正在尝试读取图像文件,将其转换为字节数组,处理单个字节,然后将其转换回图像文件并导出.

我已经尝试过它,但它似乎ImageIO.read无法读取ByteInputArrayStream- 它返回null.

这是我到目前为止所尝试的(以及抛出错误的行)

public static void RGBToGrayManual2(BufferedImage original) {
    byte[] pixels = ((DataBufferByte) original.getRaster().getDataBuffer()).getData();

    /*
     *  Code to process pixels
     */

    ByteArrayInputStream grayscaleByteInputStream = new ByteArrayInputStream(pixels);
    BufferedImage convertedGrayscale = null;


    try {
        // below line throws the error
        convertedGrayscale = ImageIO.read(grayscaleByteInputStream);

        ImageIO.write(convertedGrayscale, "jpg", new File("converted-grayscale-002.jpg"));
    } catch (IOException e) {
        System.err.println("IOException: " + e);
    }   
}
Run Code Online (Sandbox Code Playgroud)

和错误消息

线程"main"中的异常java.lang.IllegalArgumentException:image == null!在javax.imageio.ImageTypeSpecifier.createFromRenderedImage(ImageTypeSpecifier.java:925)的javax.imageio.ImageIO.getWriter(ImageIO.java:1591)at javax.imageio.ImageIO.write(ImageIO.java:1520)at project2.ImageProcessing. RGBToGrayManual2(ImageProcessing.java:252)在project2.ImageProcessing.main(ImageProcessing.java:284)

我也看过一个类似的帖子 - 从ImageIO.read(new ByteArrayInputStream(bs))返回的Null; - 并且接受的答案似乎表明它是编码的问题.

我看过这篇文章 - 哪个Java库提供了base64编码/解码? - 解码字节数组,但我不认为我做得对.

这是我试过的: …

java javax.imageio

2
推荐指数
1
解决办法
5278
查看次数