Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PGP图书馆赢得';t加密base64字符串_Java_Encryption_Java Io_Pgp - Fatal编程技术网

Java PGP图书馆赢得';t加密base64字符串

Java PGP图书馆赢得';t加密base64字符串,java,encryption,java-io,pgp,Java,Encryption,Java Io,Pgp,我有一个PGP Encryption/Decryption的实现作为类助手,但是我在用base64字符串加密有效负载时遇到了问题 下面是我尝试加密的有效负载示例: { "superagentCode": "AB0003", "agentCode": "004FJM01023", "bankCode": "000015", "requestId": "000001201910240846150999883774", "bankVerificationNumb

我有一个PGP Encryption/Decryption的实现作为类助手,但是我在用base64字符串加密有效负载时遇到了问题

下面是我尝试加密的有效负载示例:

{
    "superagentCode": "AB0003",
    "agentCode": "004FJM01023",
    "bankCode": "000015",
    "requestId": "000001201910240846150999883774",
    "bankVerificationNumber": "22123456789",
    "firstName": "Samuel",
    "middleName": "John",
    "lastName": "Smith",
    "gender": "Male",
    "dateOfBirth": "1978-Oct-20",
    "houseNumber": "10B",
    "streetName": "Almond street",
    "city": "Igando",
    "lgaCode": "502",
    "emailAddress": "aa@gmail.com",
    "phoneNumber": "08012345678",
    "customerImage": "data:image/jpeg;base64,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",
    "customerSignature": "data:image/jpeg;base64,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",
    "accountOpeningBalance": 1000
}
下面是我的加密功能:

public String encrypt(String text, String publicKeyLocation) {
    logger.info(" -|- step 1 ======== ");
    try {
        PGPLib pgp = new PGPLib();
        boolean armor = true;
        boolean withIntegrityCheck = false;
        logger.info(" -|- step  2 ======== ");
        PipedInputStream pin = new PipedInputStream();
        OutputStream o = new PipedOutputStream(pin);
        InputStream is = new ByteArrayInputStream(text.getBytes("UTF-8"));
        logger.info(" -|- step 3 ======== ");
        if (publicKeyFile == null) {
            publicKeyFile = new File(publicKeyLocation);
        }
        logger.info(" -|- step 4 ======== ");
        InputStream publicKeyStream = new FileInputStream(publicKeyFile);
        logger.info(" -|- step 5 ======== ");
        pgp.encryptStream(is, publicKeyLocation, publicKeyStream, o, armor,
                withIntegrityCheck);
        logger.info(" -|- step 6 ======== ");
        do {
            logger.info(" -|-  pin.available(): " + pin.available());
        } while (pin.available() <= 0);
        logger.info(" -|- starting encryption 7 ======== ");
        byte[] body = new byte[pin.available()];
        int numberRead = pin.read(body);
        logger.info(" -|- SSModuleClient :: pickMessage :: numberRead: "
                + numberRead);

        return byte2hex(body);
    } catch (Exception ex) {
        logger.info(" -|- SSModule :: MessageProcessor :: encrypt () :: Error Occurred ..."
                + ex.getMessage());
        logger.info("SSModule", ex);
    }

    return "";
}
公共字符串加密(字符串文本、字符串公钥位置){
logger.info(“-|-步骤1===”;
试一试{
PGPLib pgp=新的PGPLib();
布尔值=真;
整度检查为false的布尔值;
logger.info(“-|-步骤2===”;
PipedInputStream引脚=新的PipedInputStream();
OutputStream o=新管道输出流(pin);
InputStream is=newbytearrayinputstream(text.getBytes(“UTF-8”);
logger.info(“-|-步骤3==”;
如果(publicKeyFile==null){
publicKeyFile=新文件(publicKeyLocation);
}
logger.info(“-|-步骤4===”;
InputStream publicKeyStream=新文件InputStream(publicKeyFile);
logger.info(“-|-步骤5===”;
pgp.encryptStream(is、publicKeyLocation、publicKeyStream、o、armor、,
使用完整性检查);
logger.info(“-|-步骤6===”;
做{
logger.info(“-|-pin.available():”+pin.available());

}while(pin.available()这是因为代码等待
encryptStream
完成后才开始从
PipedInputStream
读取。管道流:读取线程在写入线程写入时读取。等待读取直到写入完成,导致死锁

因此,修复代码的一种方法是在一个单独的线程中生成
encryptStream
,可以直接使用线程,也可以使用执行器,等等。然后,您必须处理所有线程注意事项

当您加密的字符串很大时,这种设置可能会有好处,并且您可以在加密字符串的其余部分准备就绪之前,对部分字符串执行一些有效的操作,例如将其发送到文件或网络连接。但是,您的代码似乎没有设置为利用您对结果所做的所有操作encryptStream的ts将它们转换为十六进制字符串并返回。这指向了一个更简单的解决方案:不要使用管道流

您尝试使用
PipedOutputStream
的方式由类以更简单的方式提供,不需要线程:

ByteArrayOutputStream o = new ByteArrayOutputStream();
pgp.encryptStream(is, publicKeyLocation, publicKeyStream, o, armor,
        withIntegrityCheck);
byte[] body = o.toByteArray();
int numberRead = body.length;