0

バイト [] を文字列に変換しています。バイト配列を文字列に変換するたびに、毎回その前にプレフィックス型の文字があります。大文字など、さまざまな文字を試しました。まだ接頭辞があります。

バイトコードをシステム出力に書き込むと、文字がまだ残っています。

System.out.write(theByteArray);

System.out.println(new String(theByteArray, "UTF-8"));

テキストをファイルに書き込むと、バイト配列が問題なく印刷されたように見えますが、それをスキャンすると、奇妙な接頭辞記号が表示されます...

暗号化するテキスト >

"aaaa"

復号化して文字列に変換したときのテキスト >

"aaaa"

キャラクターが消えているように見えます。これがそのイメージです。

キャラクターイメージ

パスワードを解読してデータベースと比較するような、指定された文字列を別の文字列と比較したいと考えています。いずれかが一致すると、アクセスが許可されます。

このバイトコードを生成しているコード。

私が見ているバイトは decData であり、これは私のコードではないことに注意してください。

byte[] encData;
        byte[] decData;
        File inFile = new File(fileName+ ".encrypted");

        //Generate the cipher using pass:
        Cipher cipher = FileEncryptor.makeCipher(pass, false);

        //Read in the file:
        FileInputStream inStream = new FileInputStream(inFile);

        encData = new byte[(int)inFile.length()];
        inStream.read(encData);
        inStream.close();
        //Decrypt the file data:
        decData = cipher.doFinal(encData);
        //Figure out how much padding to remove

        int padCount = (int)decData[decData.length - 1];

        //Naive check, will fail if plaintext file actually contained
        //this at the end
        //For robust check, check that padCount bytes at the end have same value
        if( padCount >= 1 && padCount <= 8 ) {
            decData = Arrays.copyOfRange( decData , 0, decData.length - padCount);
        }
        FileOutputStream target = new FileOutputStream(new File(fileName + ".decrypted.txt"));
        target.write(decData);
        target.close();
4

1 に答える 1