手动将trascient转成detached,继而转成persisent

博客介绍了Hibernate中对象状态与数据库表的关系。trascient状态不对应数据库表,detatched状态对应但脱离session管理,不能更新表。还给出示例,展示如何将trascient转成detached,再转成persisent以对应数据库表变化,详情可参考相关书籍章节。

trascient状态不与数据库表中对应,而detatched与数据库表对应,只是脱离了session的管理,不能更新数据库表

看一个例子

USer user = new User();

user.setName("soleghost");

user.setId(new Integer(1));//手动设置一个detached状态,将trascient转成detached

Transaction t x= session.beginTransaction();

tx.update(user);/detached转成persisent,对应数据库表的变化

session.close()

详情见<深入浅出hibernate>第五章

 

### 使用 OpenSSL 将 PKCS #7 签名嵌入或转换为 PDF 或 Word 文档的方法 #### 1. OpenSSL 和 PKCS #7 的基本概念 PKCS #7 是一种用于数字签名和加密的标准格式,OpenSSL 提供了对 PKCS #7 格式的支持。然而,直接将 PKCS #7 签名嵌入到 PDF 或 Word 文档中并不是 OpenSSL 的核心功能[^1]。需要结合其他工具或库来完成此操作。 #### 2. 将 PKCS #7 签名嵌入 PDF 文档 PDF 文档支持通过数字证书进行签名,这通常需要使用专门的 PDF 签名工具。以下是使用 OpenSSL 创建 PKCS #7 签名并将其嵌入 PDF 的方法: - **步骤概述**: - 使用 OpenSSL 创建 PKCS #7 签名。 - 使用第三方工具(如 Adobe Acrobat、iText 或 PyPDF2)将签名嵌入 PDF 文档。 - **创建 PKCS #7 签名**: ```bash openssl smime -sign -in unsigned_data.txt -out signed_data.p7s \ -signer signer_certificate.pem -inkey private_key.pem -outform DER ``` 上述命令将生成一个 DER 格式的 PKCS #7 签名文件 `signed_data.p7s`[^1]。 - **嵌入签名到 PDF**: - 使用 iText 库(Java)或 PyPDF2(Python)等工具,将生成的 PKCS #7 签名嵌入到 PDF 中。 - 示例代码(Python + PyPDF2): ```python from PyPDF2 import PdfReader, PdfWriter from PyPDF2.generic import NameObject, DictionaryObject def add_signature_to_pdf(input_pdf, output_pdf, signature_file): reader = PdfReader(input_pdf) writer = PdfWriter() for page_num in range(len(reader.pages)): writer.add_page(reader.pages[page_num]) # 添加签名字典 sig_dict = DictionaryObject({ NameObject("/Type"): NameObject("/Sig"), NameObject("/Filter"): NameObject("/Adobe.PPKLite"), NameObject("/SubFilter"): NameObject("/adbe.pkcs7.detached"), NameObject("/ByteRange"): [0, 0, 0, 0], # 需要动态计算 NameObject("/Contents"): open(signature_file, "rb").read() }) writer.add.signature(sig_dict) with open(output_pdf, "wb") as out: writer.write(out) add_signature_to_pdf("input.pdf", "output_signed.pdf", "signed_data.p7s") ``` #### 3. 将 PKCS #7 签名嵌入 Word 文档 Word 文档支持通过 VBA 宏或外部工具添加数字签名。以下是使用 OpenSSL 创建 PKCS #7 签名并嵌入 Word 文档的方法: - **创建 PKCS #7 签名**: 同样可以使用上述 OpenSSL 命令生成 PKCS #7 签名文件。 - **嵌入签名到 Word**: - 使用 Microsoft Office 内置功能或第三方工具(如 DocuWare、Aspose.Words)将签名嵌入 Word 文档。 - 示例代码(C# + Aspose.Words): ```csharp using Aspose.Words; using Aspose.Words.Signing; class Program { static void Main(string[] args) { Document doc = new Document("input.docx"); DigitalSignatureUtil.AddSignature(doc, "signed_data.p7s", "My Certificate", "Description"); doc.Save("output_signed.docx"); } } ``` #### 4. 注意事项 - OpenSSL 主要用于生成 PKCS #7 签名,但无法直接处理 PDF 或 Word 文档的签名嵌入。 - 对于 PDF,建议使用 iText 或 PyPDF2 等工具。 - 对于 Word,建议使用 Aspose.Words 或 Microsoft Office 内置功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值