Chào mừng năm mới 2016, đánh dấu sẽ viết bài sử dụng apache poi (poi-ooxml) để làm việc với Microsoft offices (2003/2007/20010...)
hehee. quên mất bài này :D
Phần này có mấy lưu ý nhỏ thôi
- Phần get private key và certificate vẫn dùng như cũ (dùng tocken, file pem, HSM...)
- Phần thiết lập chữ ký số trong offices:
//Khai báo đối tượng OPC
OPCPackage pkg = OPCPackage.open(FILE_INPUT_PATH, PackageAccess.READ_WRITE);
SignatureConfig signatureConfig = new SignatureConfig();
signatureConfig.setKey(this.get_PrivateKey());
signatureConfig.setSigningCertificateChain(Collections.singletonList((X509Certificate) this.get_Cert()));
signatureConfig.setOpcPackage(pkg);
// adding the signature document to the package
SignatureInfo si = new SignatureInfo();
si.setSignatureConfig(signatureConfig);
si.confirmSignature();
// optionally verify the generated signature
boolean b = si.verifySignature();
assert (b);
// write the changes back to disc
pkg.close();
- Thư viện cần:
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.poifs.crypt.dsig.SignatureConfig;
import org.apache.poi.poifs.crypt.dsig.SignatureInfo;
Đơn giản vậy thôi :D
--Done--
Author: HVA
Fan page: https://www.facebook.com/JavaFullstackVietNam
Group: https://www.facebook.com/groups/312867776882695
Bài đăng nổi bật
Lập trình Java Spring Boot (20 buổi)
JAVA FULLSTACK VIỆT NAM: Website: javafullstackvietnam.com Fan page: https://www.facebook.com/JavaFullstackVietNam Group: https://www.fac...
Thứ Năm, 31 tháng 12, 2015
Thứ Ba, 29 tháng 12, 2015
C#: Sử dụng RSACryptoServiceProvider tương tác với HSM ncipher để ký và xác thực dữ liệu
- Bài này hướng dẫn cách kết nối HSM từ C#, sử dụng provider RSACryptoServiceProvider.
- Khuyến nghị Protect mode key hsm: module
- Tất cả câu lệnh config chạy trên thư mục gốc cài hsm (c:\Program Files (x86)\nCipher\nfast\bin)
Các bước chi tiết:
A. Cấu hình CSP và HSM
1. Tạo Key trên HSM (làm theo tài liệu administrator HSM)
2. Tạo Container để RSACryptoServiceProvider gọi tới
- Câu lệnh tạo container
# Keytst -c test_container
3. Import key từ key HSM vào Container vừa tạo
# Cspimport --import --key [KEY OF HSM WANT TO IMPORT TO CONTANER] --appname pkcs11 [ID OF CONTAINER] exchange
Trong đó:
[KEY OF HSM WANT TO IMPORT TO CONTANER]: ID của key trong HSM đã tạo
1. Khai báo tham số CspParameters:
3. Xác thực dữ liệu
- Khuyến nghị Protect mode key hsm: module
- Tất cả câu lệnh config chạy trên thư mục gốc cài hsm (c:\Program Files (x86)\nCipher\nfast\bin)
Các bước chi tiết:
A. Cấu hình CSP và HSM
1. Tạo Key trên HSM (làm theo tài liệu administrator HSM)
2. Tạo Container để RSACryptoServiceProvider gọi tới
- Câu lệnh tạo container
# Keytst -c test_container
3. Import key từ key HSM vào Container vừa tạo
# Cspimport --import --key [KEY OF HSM WANT TO IMPORT TO CONTANER] --appname pkcs11 [ID OF CONTAINER] exchange
Trong đó:
[KEY OF HSM WANT TO IMPORT TO CONTANER]: ID của key trong HSM đã tạo
[ID OF CONTAINER]: id của Container
B. Code C# sử dụng RSACryptoServiceProvider
Sử dụng các thư viện trong c#:
using System.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography.Pkcs;
CspParameters cp = new CspParameters(1, "nCipher Enhanced Cryptographic Provider");
cp.KeyContainerName = "test_container";
cp.Flags = CspProviderFlags.UseMachineKeyStore;
cp.KeyContainerName = "test_container";
cp.Flags = CspProviderFlags.UseMachineKeyStore;
2. Khai báo RSACryptoServiceProvider và ký dữ liệu
RSACryptoServiceProvider RsaCSP=new RSACryptoServiceProvider(2048, cp);
Lúc này bạn có thể sử dụng RsaCSP để ký dữ liệu.
byte [] signature = RsaCSP.SignData("Hello HVA", new SHA1CryptoServiceProvider());
bool isValid = RsaCSP.VerifyData("Hello HVA", new SHA1CryptoServiceProvider(), signature);
Như vậy là các bạn có thể tạo kết nối HSM nCipher sử dụng RSACryptoServiceProvider của microsoft C# để ký và xác thực dữ liệu. Tương tự các bạn có thể sử dụng để làm các việc khác như: mã hóa, giải mã...
Author: HVA
Cách sử dụng obfuscated-proguard (đóng gói thư viện java + netbeans8)
1. Tải plugins tại ứng dụng Netbeans8.
Trong menu Tools->plugins (search proguard) --> cài đặt
2. Cấu hình trong file build.xml của project
Copy thẻ xml dưới đây đặt trong thẻ <project> của file build.xml (Chú ý các chú thích màu đỏ)
<target name="-post-jar">
<!-- cấu hình đường dẫn thư viện proguard -->
<property name="proguard.jar.path" value="C:\Projects\MyOwn\Common_Lib\proguard\proguard4.10.jar" />
<!-- cấu hình đường dẫn java home -->
<property name="java.home.path" value="E:\DEV_Tools\JDK_1.7U60" />
<taskdef resource="proguard/ant/task.properties"
classpath="${proguard.jar.path}" />
<echo message="Obfuscating ${dist.jar}..."/>
<mkdir dir="${build.dir}/obfuscated"/>
<proguard printmapping="${build.dir}/obfuscated/${application.title}.map"
renamesourcefileattribute="SourceFile" ignorewarnings="true">
<!-- Specify the input jars, output jars, and library jars. -->
<injar file="${dist.jar}" />
<!-- cấu hình đường dẫn + tên file jar của thư viện -->
<outjar file="${build.dir}/obfuscated/HVA.TESTConnector.jar" />
<libraryjar path="${javac.classpath}" />
<libraryjar file="${java.home.path}/jre/lib/rt.jar" />
<!-- Keep some useful attributes. -->
<keepattribute name="InnerClasses" />
<keepattribute name="SourceFile" />
<keepattribute name="LineNumberTable" />
<keepattribute name="Deprecated" />
<keepattribute name="*Annotation*" />
<keepattribute name="Signature" />
<!-- Preserve all public classes, and their public and protected fields and methods. -->
<keep access="public">
<field access="public protected" />
<method access="public protected" />
</keep>
<!-- Preserve all .class method names. -->
<keepclassmembernames access="public">
<method type ="java.lang.Class"
name ="class$"
parameters="java.lang.String" />
<method type ="java.lang.Class"
name ="class$"
parameters="java.lang.String,boolean" />
</keepclassmembernames>
<!-- Preserve all native method names and the names of their classes. -->
<keepclasseswithmembernames>
<method access="native" />
</keepclasseswithmembernames>
<!-- Preserve the methods that are required in all enumeration classes. -->
<keepclassmembers extends="java.lang.Enum">
<method access="public static"
type="**[]"
name="values"
parameters="" />
<method access="public static"
type="**"
name="valueOf"
parameters="java.lang.String" />
</keepclassmembers>
<!-- Explicitly preserve all serialization members. The Serializable
interface is only a marker interface, so it wouldn't save them.
You can comment this out if your library doesn't use serialization.
With this code serializable classes will be backward compatible -->
<keepnames implements="java.io.Serializable"/>
<keepclassmembers implements="java.io.Serializable">
<field access ="final"
type ="long"
name ="serialVersionUID" />
<field access ="!static !transient"
name ="**"/>
<field access ="!private"
name ="**"/>
<method access ="!private"
name ="**"/>
<method access ="private"
type ="void"
name ="writeObject"
parameters="java.io.ObjectOutputStream" />
<method access ="private"
type ="void"
name ="readObject"
parameters="java.io.ObjectOutputStream" />
<method type ="java.lang.Object"
name ="writeReplace"
parameters="" />
<method type ="java.lang.Object"
name ="readResolve"
parameters="" />
</keepclassmembers>
<!-- Your application may contain more items that need to be preserved;
typically classes that are dynamically created using Class.forName -->
</proguard>
</target>
3. Build lại Project
sau khi copy xong build lại project là bạn đã có một thư viện jar được đóng gói khá an toàn.
Author: HVA
Đăng ký:
Bài đăng (Atom)
Bài đăng phổ biến
-
Có một tip nhỏ, nếu không biết cũng mất khá nhiều thời gian :D Viết tiếng việt trên pdf sử dụng iText. Description: Dùng font unicode t...
-
- Bài này hướng dẫn cách kết nối HSM từ C#, sử dụng provider RSACryptoServiceProvider. - Khuyến nghị Protect mode key hsm: module - Tất cả...
-
JAVA FULLSTACK VIỆT NAM: Website: javafullstackvietnam.com Fan page: https://www.facebook.com/JavaFullstackVietNam Group: https://www.f...
-
Hôm nay mình đã làm xong các thủ tục để được miễn thuế thu nhập cá nhân (TNCN) khi bán nhà. Thủ tục hơi loằng ngoằng (ko có quy định mẫu b...
-
Hôm trước debug asp.net trên VS2005 dính lỗi ngớ ngẩn với IE9, không tài tài bật được chức năng debug. Mãi mới biết. chỉ cần trước khi debug...
-
Trong phần này mình hướng dẫn cấu hình rotate log cho access_log và error_log Trong thư mục File cấu hình http server: /opt/IBM/WebSphe...
-
Cảnh Nhàn Tác giả: Nguyễn Bỉnh Khiêm Một mai, một cuốc, một cần câu Thơ thẩn dầu ai vui thú nào Ta dại, ta tìm nơi vắng vẻ Ng...
-
GIẢN ĐƠN (Thơ: An Nhiên) Nếu có thể đừng than chi số phận Gạt nỗi buồn vướng bận gió cuốn đi Đời ngắn lắm yêu thương còn chưa đủ Sao bận lòn...
-
Sống Tác giả: Chưa biết Sống không giận, không hờn, không oán trách Sống mỉm cười với thử thách chông gai Sống vươn lên theo kịp ánh ban ma...
-
Buổi 1: Giới thiệu về Struts Framework Struts Framework là gì? Struts là một framwork mã nguồn mở cho việc phát triển các ứng dụng web bằng...