解密密文

时间:2019-05-16 09:42:56

标签: java encryption

我在密文描述方面面临一个问题。之所以用另一种方法来构建它,是因为我想将加密的文本存储到数据库中。

例如,用户键入密码->系统将加密->密码将存储在数据库中。

当我尝试从教程@ https://www.tutorialspoint.com/java_cryptography/java_cryptography_decrypting_data.html中给出的方法时。它工作得很好。但是,当我尝试将其修改为我的需要时。我不断收到异常错误。

encryptionQuery.java 这是我的加密方法

       byte[] cipherText;
    public byte[] encryption(String password) {

        public void encryption(String password) {

        try {
            KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
            keyPairGen.initialize(2048);
            KeyPair pair = keyPairGen.generateKeyPair();
            PublicKey publicKey = pair.getPublic();
            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
            cipher.init(Cipher.ENCRYPT_MODE, publicKey);
            byte[] input = password.getBytes();
            cipher.update(input);
            cipherText = cipher.doFinal();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

对于getCipher,在我将我的plainText转换为加密的Text之后。它应该存储在我的数据库中。但出于测试目的,我已将其存储在我的全局变量cipherText

private byte[] getcipher() {
        return cipherText;
    }

解密方法..


    public void passwordDecrpyted() {
        try {
            KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
            keyPairGen.initialize(2048);
            KeyPair pair = keyPairGen.generateKeyPair();

            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
            cipher.init(Cipher.DECRYPT_MODE, pair.getPrivate());
            byte[] decipheredText = cipher.doFinal(getcipher());
            System.out.println(new String(decipheredText));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

我觉得我的解密方法存在问题。当我运行程序时,我一直收到的错误是


sun.security.rsa.RSAPadding.unpadV15(未知来源) sun.security.rsa.RSAPadding.unpad(未知来源)

预先感谢您:)

0 个答案:

没有答案