- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我创建了一个工具来使用 AES 加密来加密我的表数据。
加密方式
public String encrypt(String plainText) throws Exception {
byte[] cipherBytes = null;
log.info("Started encryption...");
System.out.println("value before encryption :" + plainText);
log.info("value before encryption :" + plainText);
if (plainText != null && !plainText.isEmpty()) {
if (cipher != null && key != null) {
byte[] ivByte = new byte[cipher.getBlockSize()];
IvParameterSpec ivParamsSpec = new IvParameterSpec(ivByte);
cipher.init(Cipher.ENCRYPT_MODE, key, ivParamsSpec);
cipherBytes = cipher.doFinal(plainText.getBytes());
log.info("Completed encryption.");
log.info("Encrypted data : " + new String(cipherBytes, "UTF8"));
System.out.println("value after encryption" + Hex.encodeHexString(cipherBytes));
log.info("value after encryption" + Hex.encodeHexString(cipherBytes));
return Hex.encodeHexString(cipherBytes);
} khác {
log.info("Encryption failed, cipher, key is null.");
throw new RuntimeException(
"Encryption failed, cipher, key is null.");
}
}
return plainText;
}
我想避免对我的表数据进行双重加密。我想检查现有记录是否已加密。有什么办法可以检查吗?
câu trả lời hay nhất
加密后,在前面加上一些前缀,例如AES:
。解密时,检查前缀是否存在(显然是将其删除)。
许多密码实现都做类似的事情,其中前几个字节标识算法。
与任何好的加密方案一样,只有 key 必须保密。该算法可以在不影响安全性的情况下公开。
唯一的边缘情况是真正的明文是否以前缀开头。如果您认为这值得考虑,那么您可以通过选择不太可能的前缀来降低风险(也许利用对明文的了解)。为了进一步保证,您可以查看输入的长度,因为真实密文的长度保证是 block 大小的倍数。
关于Java如何检查值是否已经AES加密;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50835401/
Câu hỏi của tôi: Rất cụ thể. Tôi đang cố gắng tìm ra cách đơn giản nhất để phân tích văn bản sau: ^^domain=domain_value^version=version_value^account_type=account_ty
Được rồi, đây là vấn đề nan giải của tôi: Tôi đang phát triển bot Câu hỏi thường gặp cho khối con Reddit. Tôi đang gặp rắc rối với logic bool và cần một con mắt có kinh nghiệm hơn (đây là cuộc phiêu lưu đầu tiên của tôi với Python). Bây giờ, đã đến lúc
Đầu tiên nó lặp qua tất cả các giá trị y và sau đó là tất cả các giá trị x. Tôi cần X và y thay đổi cùng một lúc. Với x = 3 To lr + 1 For y = 2 To lr Anyl.Cells(x, 1)
Giả sử tôi có một bảng Excel có 2 cột: ngày tháng trong các ô A1 đến A10 và các giá trị trong các ô B1 đến B10. Tôi muốn tổng hợp tất cả các giá trị cho các ngày trong tháng Năm. Tôi có 3 khả năng: {=SUM((MONTH(A1:A10)=
Làm cách nào để chuyển đổi điểm Z từ phân phối Z (phân phối chuẩn chuẩn, phân phối Gaussian) sang giá trị p?
Tôi đang viết lại một số mã Javascript để hoạt động trong Excel VBA. Kể từ khi tìm kiếm trên trang này, tôi đã dịch được gần như toàn bộ mã Javascript! Tuy nhiên, có một số mã mà tôi không thể hiểu chính xác nó đang làm gì. Đây là một
Tôi đã gặp một tình huống trong đó ngày có dấu thời gian chứa định dạng ngày. Sau đó, tôi muốn xây dựng một biểu đồ hiển thị số lượng mục "được nhấp" "mỗi ngày", // khai báo mảng $array1 = array("Date" => 0);
Tôi mới làm quen với scala! Câu hỏi của tôi là, có lớp trường hợp nào chứa thành viên myItem:Option[String] không và khi tôi xây dựng lớp, tôi cần bọc nội dung chuỗi trong: Option("some string") hoặc So
Tôi đang tạo một hệ thống đăng nhập bằng PHP. Tôi cần người dùng đăng nhập bằng tên người dùng hoặc email hoặc số điện thoại của mình và sau đó sử dụng mật khẩu. Bởi vì tôi biết trong Java chúng ta sẽ có một cái gì đó như email==user^ username == user
Tôi đang sử dụng sqlite trong dự án C++ nhưng tôi gặp sự cố khi sử dụng WHERE trên một cột có giá trị văn bản. Tôi đã tạo cơ sở dữ liệu sqlite: CREATE TABLE User( id INTEGER).
Khi hàm tạo rõ ràng, nó không được sử dụng cho các chuyển đổi tiềm ẩn. Trong đoạn mã đã cho, hàm tạo được đánh dấu là rõ ràng. Vậy thì tại sao trong trường hợp foo obj1(10.25); nó hoạt động nhưng trong trường hợp foo obj2=10.25;
Tôi biết đây là một câu hỏi chủ quan, vì vậy tôi xin lỗi nếu cần phải đóng nó lại, nhưng tôi cảm thấy nó xuất hiện khá thường xuyên và khiến tôi tự hỏi liệu có ai ưa thích hình thức này hơn hình thức khác hay không. Rõ ràng câu trả lời hay nhất là "cấu trúc lại mã để bạn không cần kiểm tra lỗi", nhưng đôi khi không có.
Sự khác biệt giữa hai bộ chọn jQuery này là gì? Đây là định nghĩa từ w3schools.com: [attribute~=value] Bộ chọn chọn một thuộc tính cụ thể có giá trị chứa một chuỗi cụ thể. [thuộc tính*=
Tại sao chúng ta lại cần Bộ chọn CSS [attribute|=value] khi Bộ chọn CSS3 [attribute*=value] về cơ bản thực hiện điều tương tự và khả năng tương thích của trình duyệt gần như tương tự? tồn tại
Tôi đang giải quyết vấn đề về biểu thức chính quy. Tôi đã có một biểu thức chính quy như thế này [0-9]*([.][0-9]{2}). Đây là xác nhận định dạng amont. Bây giờ, với xác thực này, tôi muốn bao gồm số tiền 0 không được cung cấp. Ví dụ 10 là hợp lệ, nhưng
Tôi đang nghiên cứu các câu hỏi mẫu cho kỳ thi Khoa học Máy tính A và không hiểu tại sao câu trả lời đúng cho câu hỏi sau lại đúng. Hãy xem xét các phương pháp sau đây. bí ẩn void tĩnh công khai (Danh sách nums) { for (
Được rồi, tôi đang viết một chương trình Perl có hàm băm của một giá trị mà tôi thu thập (hoàn toàn trong một chương trình hoàn toàn riêng biệt) và đưa nó vào tập lệnh Perl này. Hàm băm này là hàm băm của (chuỗi,chuỗi). Tôi muốn sử dụng 3 cách để
Tôi có dữ liệu bảng như sau, từ các bảng khác nhau. Tôi chỉ muốn nhận giá trị tối đa từ cột thứ tư nếu cột thứ ba có giá trị "Nợ" và cột đầu tiên (ngày) có giá trị tối đa. Giá trị cuối cùng dựa trên MAX(DATE) chứ không phải MAX(PRICE). Vì vậy, bằng ngôn ngữ đơn giản
Tôi gặp một tình huống lạ là chỉ lưu trạng thái lỗi vào cơ sở dữ liệu. Truy vấn của tôi vẫn thực thi sai khi "trạng thái" phải đúng. Tôi có chức năng công khai của Bộ điều khiển Change_a có chức năng này
Tôi có một bảng giao dịch (được đơn giản hóa cho các cột bắt buộc): id client_id value 1 1 200 2 2 150 3 1
Tôi là một lập trình viên xuất sắc, rất giỏi!