我正在为我的 Java 编程课程开发一个项目来创建密码管理器,并且我正在致力于加密和解密我的密码。
我的加密部分工作正常,但我不断收到 javax.crypto.AEADBadTagException: 标签不匹配!错误。
这是完整的错误:
线程“主”javax.crypto.AEADBadTagException 中出现异常:标签不匹配!在 java.base/com.sun.crypto.provider.GaloisCounterMode.decryptFinal(GaloisCounterMode.java:580) 在 java.base/com.sun.crypto.provider.CipherCore.finalNoPadding(CipherCore.java:1116) 在 java.base /com.sun.crypto.provider.CipherCore.fillOutputBuffer(CipherCore.java:1053) 在 java.base/com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:853) 在 java.base/com.sun .crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446) 在java.base/javax.crypto.Cipher.doFinal(Cipher.java:2202) 在PasswordVault.Decrypt(PasswordVault.java:89) 在PasswordVault.main(密码保管库.java:27)
我一直试图通过在这里的研究来自己找出这个错误,但我没有太多运气或不了解出了什么问题。
这是我的主要课程:
import java.io.UnsupportedEncodingException;
import java.security.*;
import java.util.ArrayList;
import java.util.Scanner;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.GCMParameterSpec;
import java.util.Base64;
public class PasswordVault {
private static ArrayList<Password> passwordVault;
public Scanner keyboard = new Scanner(System.in);
public String website;
public String username;
private String password;
private SecretKey key;
public static void main(String[] args) …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中的生日具有与 Excel 序列日期混合的常规日期,如下所示:
09/01/2020 12:00:00 AM
05/15/1985 12:00:00 AM
06/07/2013 12:00:00 AM
33233
26299
29428
Run Code Online (Sandbox Code Playgroud)
我尝试了此答案中的解决方案,所有 Excel 串行格式的日期都被清空,同时保留正常日期格式的日期。
这是我的代码:
import pandas as pd
import xlrd
import numpy as np
from numpy import *
from numpy.core import *
import os
import datetime
from datetime import datetime, timedelta
import glob
def from_excel_ordinal(ordinal, _epoch0=datetime(1899, 12, 31)):
if ordinal >= 60:
ordinal -= 1 # Excel leap year bug, 1900 is not a leap year!
return (_epoch0 + timedelta(days=ordinal)).replace(microsecond=0)
path = 'C:\\Input'
os.chdir(path) …Run Code Online (Sandbox Code Playgroud) 所以我试图创建一个真值表,我可以导出为csv或excel格式.我是Python的新手,所以如果我的代码太可怕,请耐心等待.
经过一些研究后,我开始将其作为真值表的代码:
import itertools
table = list(itertools.product([False, True], repeat=6))
print(table)
Run Code Online (Sandbox Code Playgroud)
然后我得到了这段代码:
import csv
import sys
with open('C:\\blahblah5.csv','w') as fout:
writer = csv.writer(fout, delimiter = ',')
writer.writerows(table)
Run Code Online (Sandbox Code Playgroud)
这让我几乎到了csv格式的真值表需要的地方.但是,当我在excel中打开文件时,我的记录之间插入了空白行.我尝试了一个在网上找到的提示,我需要将输入类型从w更改为wb,但是当我这样做时出现此错误:
Traceback (most recent call last):
File "<pyshell#238>", line 3, in <module>
writer3.writerows(table)
TypeError: 'str' does not support the buffer interface
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里开始,因为我觉得我如此接近于将其变成我想要的格式.