Bài tập ma hoa chuỗi hay trong java năm 2024

Cá chình hoa (Anguilla marmorata) được nuôi thử nghiệm trong lồng nổi ở hồ Hòa Mỹ (Phong Điền – Thừa Thiên Huế) với hai loại thức ăn là cá tạp tươi và thức ăn công nghiệp. Theo dõi các yếu tố môi trường như nhiệt độ, pH, hàm lượng oxy hòa tan mặc dù có biến động nhưng đều nằm trong ngưỡng chịu đựng của cá. Sau 16 tháng nuôi cá được cho ăn bằng cá tạp tươi có trọng lượng trung bình 826,35±61,35g/con; cá nuôi bằng thức ăn công nghiệp đạt trong lượng trung bình 538,4±30,51g/con. Tốc độ tăng trưởng của cá nuôi bằng các loại thức ăn khác nhau có sự sai khác có ý nghĩa thống kê (P<0,05). Giá bán cá chình ở các kích cỡ khác nhau có sự chênh lệch nhau khá lớn và đã ảnh hưởng đến hiệu quả kinh tế ở các lô thí nghiệm. Cụ thể: lô nuôi bằng cáp tạp giá bán 320.000đ/kg đã cho lãi hơn 9,5 triệu đồng; lô nuôi bằng thức ăn công nghiệp giá bán là 290.000đ/kg, khối lượng cá thu được ít nên đã bị lỗ hơn 17,5 triệu đồng. Điều này cho thấy việc nuôi cá chình nên sử dụng thức ăn tươi sống. Từ khoá: An...

Văn học Việt Nam nửa đầu thế kỉ XX được xem là giai đoạn “giao thời”, với sự đấu tranh giữa thơ Cũ và thơ Mới, giữa truyền thống và cách tân, tồn tại nhiều khuynh hướng, dòng phái khác nhau. Từ góc độ thể loại, không ít người cho đây là thời điểm thơ tự do thắng thế, thơ Đường luật nói chung bị xem là hết mùa, lỗi thời. Song vẫn còn đó một minh chứng hùng hồn cho sự hiện diện của thơ Nôm Đường luật Việt Nam ở nửa đầu thế kỉ XX, đó là Nôm Đường luật Phan Bội Châu. Bài viết trên cơ sở chỉ ra một vài đặc điểm về ngôn ngữ trong thơ Nôm Đường luật Phan Bội Châu thời kỳ ở Huế, từ đó cho thấy những đổi mới, cách tân của Phan Sào Nam trong việc sử dụng thể thơ truyền thống của dân tộc.

TÓM TẮT Trên cơ sở xác định nguyên nhân cơ bản gây xói lở bờ sông Cửu Long, là tải lượng phù sa mịn giảm và thiếu hụt lượng cát sỏi; bài báo đề xuất các giải pháp tổng thể giải quyết vấn đề xói lở bờ sông Cửu Long. Đó là (i) đẩy mạnh công tác tuyên truyền nâng cao nhận thức của người dân; (ii) nâng cao hiệu quả công tác cảnh báo và di dời người dân ra khỏi khu vực có nguy cơ xói lở cao; (iii) làm tốt công tác quản lí khai thác và sử dụng dòng sông; (iv) quy hoạch chỉnh trị sông tổng thể gắn với liền với quy hoạch lãnh thổ; (v) tăng cường vai trò của Ủy ban sông Mekong Việt Nam và các tổ chức phi chính phủ. Từ khóa: xói lở bờ sông, sông Cửu Long, tiếp cận địa lí tổng hợp, chỉnh trị sông. ABSTRACT An overview study of primary causes and general solutions to erosion of riverbank in the Mekong river This study proposed the general solutions based on determinating primary reasons for resolving river bank erosion problems in the Mekong river based on sediment load decrement and sand-grave...

Trùn quế (Perionyx excavatus) là loài sinh vật phổ biến và có ích trong việc tham gia cải tạo và cung cấp dưỡng chất cho đất nông nghiệp. Bên cạnh đó, hàm lượng đạm cao trong thịt trùn quế cũng là nguồn dưỡng chất dồi dào cho ngành chăn nuôi. Chúng tôi đã tiến hành thuỷ phân thịt trùn quế bằng hệ thống lên men bán tự động trong 18 giờ ở nhiệt độ 40℃, tốc độ khuấy 130 vòng/phút, pH 6,5. Hỗn hợp lên men được bổ sung 5% rỉ đường, 1% enzyme protease SEB-Neutral PL, 5mM Ca2+ và 40% thịt trùn quế. Dịch thuỷ phân được sấy phun với 20% maltodextrin M100 để tạo bột đạm hoà tan nhằm dể dàng bảo quản, vận chuyển và bổ sung cho chăn nuôi. Đàn heo sử dụng 2% bột đạm từ thịt trùn quế trong khẩu phần ăn có tốc độ tăng trưởng tốt nhất. Các đàn heo sử dụng bột đạm từ thịt trùn quế đều có sức khoẻ và hoạt động sinh lý ổn định. Nghiên cứu này sẽ tiếp tục được thực hiện trên nhiều đối tượng khác để nhằm thương mại hoá sản phẩm bột đạm từ thịt trùn quế.

Mã hóa và giải mã dữ liệu trong java sẽ trình bày hai thao tác liên quan đến bảo mật dữ liệu là mã hóa và giải mã. Mã hoá là thao tác chuyển đổi văn bản hoặc dữ liệu ban đầu thành một hình thức mã hóa hay các bản mã bằng cách áp dụng các biến đổi toán học.

Ngược lại với thao tác này là giải mã. Giải mã truy xuất dữ liệu gốc từ các bản mã sử dụng một khóa giải mã. Và việc mã hoá dữ liệu nhằm nâng cao khả năng bảo mật, xác thực và tính toàn vẹn của thông tin được truyền trên các phương tiện truyền thông.

Mã hóa và giải mã dữ liệu trong java – Cách thức hoạt động

Giả sử B muốn gửi thông điệp m sang cho A. B sẽ dùng khoá công khai (public key) mà A cung cấp để mã hoá dữ liệu và gửi. Khi nhận A được thông điệp từ B, A sẽ dùng khoá riêng (private key) của mình để giải mã và đọc. Trong tình huống này, A sẽ phải tạo ra cặp khoá gồm Public key và Private key.

Mã hóa và giải mã dữ liệu trong java – Các thuật toán mã hoá

Có nhiều thuật toán mã hóa được phổ biến rộng rãi và được sử dụng trong an ninh thông tin. Chúng được phân loại gồm mã hoá khoá đối xứng và mã hoá khoá không đối xứng. Trong mã hóa khóa đối xứng chỉ có một khoá (key) được sử dụng để mã hóa và giải mã dữ liệu. Trong mã hoá khóa bất đối xứng sử dụng hai khoá là khóa riêng và khoá công khai. Trong đó khóa công khai được sử dụng để mã hóa và khóa riêng được sử dụng để giải mã. Bảng bên dưới trình bày các thuật toán mã hoá.

AESDESRSADeveloped200019771978Key Size128, 192, 256 bits56 bits>1024 bitsAlgorithmĐối xứng (Symmetric)Đối xứng (Symmetric)Bất đối xứng (Asymmetric)

Mã hóa và giải mã dữ liệu trong java – Thuật toán mã hoá bất đối xứng

Người nhận (Receiver): Tạo cặp khoá

SecureRandom sr = new SecureRandom(); // Thuật toán phát sinh khóa - Rivest Shamir Adleman (RSA) KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(2048, sr); // Phát sinh cặp khóa KeyPair kp = kpg.genKeyPair(); // PublicKey PublicKey pubKey = kp.getPublic(); // PrivateKey PrivateKey priKey = kp.getPrivate(); // Lưu public key và private key vào tập tin // ...

Người gửi (Sender): Mã hoá dữ liệu

// Đọc file chứa public key FileInputStream fis = new FileInputStream("fileName"); byte[] b = new byte[fis.available()]; fis.read(b); fis.close(); // Tạo public key X509EncodedKeySpec spec = new X509EncodedKeySpec(b); KeyFactory factory = KeyFactory.getInstance("RSA"); PublicKey pubKey = factory.generatePublic(spec); // Sử dụng public key để mã hoá dữ liệu Cipher c = Cipher.getInstance("RSA"); c.init(Cipher.ENCRYPT_MODE, pubKey); byte encryptOut[] = c.doFinal("Dữ liệu cần mã hoá"); //strEncrypt chứa dữ liệu sau khi mã hoá String strEncrypt = Base64.encode(encryptOut);

Người nhận (Reveiver): Giải mã dữ liệu nhận được

// Đọc file chứa private key FileInputStream fis = new FileInputStream("fileName"); byte[] b = new byte[fis.available()]; fis.read(b); fis.close(); // Tạo private key PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(b); KeyFactory factory = KeyFactory.getInstance("RSA"); PrivateKey priKey = factory.generatePrivate(spec); // Giải mã dữ liệu Cipher c = Cipher.getInstance("RSA"); c.init(Cipher.DECRYPT_MODE, priKey); // decryptOut chứa dữ liệu sau khi giải mã byte decryptOut[] = c.doFinal(Base64.decode(txtMessage.getText()));

Tạo cặp khoá

package swing_pkg.basic.cryptography_signature.demo; import java.io.File; import java.io.FileOutputStream; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; / * * @author giasutinhoc.vn */ public class KeyPairGenerate { public static void main(String[] args) { try { SecureRandom sr = new SecureRandom(); //Thuật toán phát sinh khóa - Rivest Shamir Adleman (RSA) KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(2048, sr); //Phát sinh cặp khóa KeyPair kp = kpg.genKeyPair(); //PublicKey PublicKey pubKey = kp.getPublic(); //PrivateKey PrivateKey priKey = kp.getPrivate(); //Lưu Public Key FileOutputStream fos = new FileOutputStream("D:/file/pubKey.bin"); fos.write(pubKey.getEncoded()); fos.close(); //Lưu Private Key fos = new FileOutputStream("D:/file/priKey.bin"); fos.write(priKey.getEncoded()); fos.close(); System.out.println("Generate key successfully"); } catch (Exception e) { e.printStackTrace(); } } }

Mã hoá dữ liệu

package swing_pkg.basic.cryptography_signature.demo; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import java.io.FileInputStream; import java.security.KeyFactory; import java.security.PublicKey; import java.security.spec.X509EncodedKeySpec; import javax.crypto.Cipher; / * * @author giasutinhoc.vn */ public class Encrpytion { public static void main(String[] args) { try { // Đọc file chứa public key FileInputStream fis = new FileInputStream("D:/file/pubKey.bin"); byte[] b = new byte[fis.available()]; fis.read(b); fis.close(); // Tạo public key X509EncodedKeySpec spec = new X509EncodedKeySpec(b); KeyFactory factory = KeyFactory.getInstance("RSA"); PublicKey pubKey = factory.generatePublic(spec); // Mã hoá dữ liệu Cipher c = Cipher.getInstance("RSA"); c.init(Cipher.ENCRYPT_MODE, pubKey); String msg = "giasutinhoc.vn"; byte encryptOut[] = c.doFinal(msg.getBytes()); String strEncrypt = Base64.encode(encryptOut); System.out.println("Chuỗi sau khi mã hoá: " + strEncrypt); } catch (Exception ex) { ex.printStackTrace(); } } }

Chuỗi sau khi mã hoá

SIpP0Bnu/XSCOpOvsJWLcWOHzFQ8jipidewfghbPl0WoJC/i5OWJbzk5IfdqR3x8tRJ9a2tY7zuAFgdti0BGivxWpuHeSrRO9hDPakwTw1+7OYizDJDb0UCAEViEhJCB09FhZkNnxtTpG+o4UaSeSVG/5KGCA7oIIsG0/tYpdCqv8do6KdGODHDjmKMhTbmjcsA2ksK93gQVVkIi/QkSgUxbV12GtXRpxS9zKpImNxH6otUT08K4UYPIGigU/0T8JBxHiDdb0R0uphKGei8+UJ++pDwtcNkv9yurkNcLL7oHzv16yL7bJV0zK5uBm6+tmbpU4pMLrqlYcrxwnMBZEw==

Giải mã dữ liệu

package swing_pkg.basic.cryptography_signature.demo; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import java.io.FileInputStream; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.PKCS8EncodedKeySpec; import javax.crypto.Cipher; / * * @author giasutinhoc.vn */ public class Decryption { public static void main(String[] args) { try { // Đọc file chứa private key FileInputStream fis = new FileInputStream("D:/file/priKey.bin"); byte[] b = new byte[fis.available()]; fis.read(b); fis.close(); // Tạo private key PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(b); KeyFactory factory = KeyFactory.getInstance("RSA"); PrivateKey priKey = factory.generatePrivate(spec); // Giải mã dữ liệu Cipher c = Cipher.getInstance("RSA"); c.init(Cipher.DECRYPT_MODE, priKey); byte decryptOut[] = c.doFinal(Base64.decode("SIpP0Bnu/XSCOpOvsJWLcWOHzFQ8jipidewfghbPl0WoJC/i5OWJbzk5IfdqR3x8tRJ9a2tY7zuAFgdti0BGivxWpuHeSrRO9hDPakwTw1+7OYizDJDb0UCAEViEhJCB09FhZkNnxtTpG+o4UaSeSVG/5KGCA7oIIsG0/tYpdCqv8do6KdGODHDjmKMhTbmjcsA2ksK93gQVVkIi/QkSgUxbV12GtXRpxS9zKpImNxH6otUT08K4UYPIGigU/0T8JBxHiDdb0R0uphKGei8+UJ++pDwtcNkv9yurkNcLL7oHzv16yL7bJV0zK5uBm6+tmbpU4pMLrqlYcrxwnMBZEw==")); System.out.println("Dữ liệu sau khi giải mã: " + new String(decryptOut)); } catch (Exception ex) { ex.printStackTrace(); } } }

Dữ liệu sau khi giải mã

giasutinhoc.vn

Mã hóa và giải mã dữ liệu trong java – Bài tập thực hành

Câu 1: Tạo cặp khoá

Khi người dùng chọn nút lệnh “Generate Key”, chương trình sẽ tạo cặp khóa Public Key và Private Key được dùng để mã hóa và giải mã dữ liệu. Sau khi tạo xong cặp khóa ,chương trình sẽ hiển thị hộp thoại cho phép người dùng lựa chọn thư mục lưu cặp khoá. Lưu ý thứ tự lưu: Public key lưu trước, Private key lưu sau (Thứ tự này do lập trình qui định, không có ý nghĩa về mặt mã hóa)

Hiển thị thông báo xác nhận đã xử lý thành công

Câu 2: Mã hoá dữ liệu

Sau khi người dùng nhập nội dung cần mã hóa tại Message và nhấn nút “Send”, chương trình sẽ yêu cầu cung cấp Public key để mã hóa dữ liệu.

Dữ liệu sau khi mã hóa thành công

Câu 3: Giải mã dữ liệu

Nhập thông tin cần mã hóa, sau đó chọn nút “Decrypt”, chương trình sẽ yêu cầu cung cấp Private key được dùng để giải mã dữ liệu

Chủ đề