ファイルの解釈に問題があります。ファイルは次のように構築されます。
「名前」-@-「日付」-@-「著者」-@-「署名」
署名はバイト配列です。ファイルを読み返すと、それを文字列に解析して分割します。
myFileInpuStream.read(fileContent);
String[] data = new String(fileContent).split("-@-");
var fileContent を見ると、バイトが適切であることがわかります。しかし、署名バイト配列を取得しようとすると:
byte[] signature= data[3].getBytes();
63 の値が間違っている場合があります。次の方法でいくつかの解決策を試しました。
new String(fileContent, "UTF-8")
しかし、運がありません。誰か助けてくれませんか?署名は固定長ではないため、ハードコードすることはできません...
追加情報:
元の署名:
[48, 45, 2, 21, 0, -123, -3, -5, -115 , 84, -86, 26, -124, -112, 75, -10, -1, -56, 40, 13 , -46, 6, 120, -56, 100, 2, 20, 66, -92, -8, 48, -88, 101, 57, 56, 20, 125, -32, -49, -123, 73 、96、76、-82、81、51、69]
filecontent(読み取り後の変数):
... 48, 45, 2, 21, 0, -123, -3, -5, -115 , 84, -86, 26, -124, -112, 75, -10, -1, -56, 40 、13、-46、6、120、-56、100、2、20、66、-92、-8、48、-88、101、57、56、20、125、-32、-49、-123 、73、96、76、-82、81、51、69]
署名 (分割および getBytes() 後):
[48, 45, 2, 21, 0, -123, -3, -5, 63 , 84, -86, 26, -124, 63, 75, -10, -1, -56, 40, 13, - 46, 6, 120, -56, 100, 2, 20, 66, -92, -8, 48, -88, 101, 57, 56, 20, 125, -32, -49, -123, 73, 96 、76、-82、81、51、69]