在使用Javax.crypto
密码(更具体的AES128/CBC/PKCS5Padding
)时,doFinal
在将NullPointerException
作为方法参数传递给null
时会抛出null
。
有没有办法加密null
,以便在将其保存到数据库时,我不会将null
存储为#This valid till 4 digit number
numbers={1:'one', 2:'two', 3:'three', 4:'four', 5:'five', 6:'six', 7:'seven', 8:'eight', 9:'nine',
10:'ten', 11:'eleven', 12:'twelve', 13:'thirteen', 14:'fourteen', 15:'fifteen', 16:'sixteen',
17:'seventeen', 18:'eighteen', 19:'nineteen', 20:'twenty', 30:'thirty', 40:'forty', 50:'fifty',
60:'sixty', 70:'seventy', 80:'eighty', 90:'ninety', 100:'hundred', 1000:'thousand'}
def my_fun(num):
list = []
num_len = len(str(num)) - 1
while num_len > 0 and num > 0:
while num_len > 0 and num > 0:
if num in numbers and num < 1000:
list.append(numbers[num])
num_len = 0
elif num < 100:
list.extend([numbers[num - num%10], numbers[num%10]])
num_len = 0
else:
quotent = num//10**num_len # 4567//1000= 4
num = num % 10**num_len #4567%1000 =567
if quotent != 0 :
list.append(numbers[quotent])
list.append(numbers[10**num_len])
else:
list.append(numbers[num])
num_len -= 1
return ' '.join(list)
或类似的东西?
答案 0 :(得分:4)
不,你不能加密NULL ...加密需要一个输入值(NULL不是)。如果绝对必须在数据库中存储加密值,则可以检查加密的值是否为NULL并将其转换为代表值(空字符串,0,无论您的偏好),并在解密时对该值执行类似的检查,并重新返回NULL。但是,在我看来,这是hacky,应该避免 - 最好不要存储任何价值,但我不知道你的情况。
答案 1 :(得分:0)
在尝试加密之前检查null。如果它为null,则不加密它。同样用于解密。