标签: digital-signature

是否可以使用十六进制编辑器修复 .png 文件?

我从 Android 游戏的 asset 文件夹中获得了一堆.png文件。我从 .obb 文件中派生了所有资源。可以打开所有其他文件。但这些 .png 文件似乎都无法打开。我尝试了很多相关的程序;Illustrator、Photoshop、GIMP、Paint 和一些在线文件查看器。但他们谁也做不到。


然后我检查了文件的十六进制代码,发现这些文件不是以通常的 png 标头开头,即

89 50 4E 47 0D 0A 1A 0A
Run Code Online (Sandbox Code Playgroud)但一切都
49 45 4E 44 AE 42 60 82
Run Code Online (Sandbox Code Playgroud)属于png格式。

在这里检查 .PNG 签名

所以我尝试将 png 标头添加到文件中,然后保存它们。我不知道它是否会起作用,只是尝试过。我仍然无法打开这些文件。


那么有没有办法将这些文件作为图像打开,或者它们只是某种格式为 .png 的数据而不是用作图像?

如果是要添加十六进制头,我该怎么做?



十六进制代码的第一页

谢谢。

format file-extension png hex digital-signature

5
推荐指数
1
解决办法
3万
查看次数

如何使用 pypdf 将内容附加到 PDF 并保留过去的版本

PDF 支持文档版本。这意味着当前文档可以保持不变,我们只需添加信息即可更改文档的内容和呈现方式。该功能对于验证过去数字签名中文档的外观和完整性特别有用。

为了更好地理解我的意思,请查看图 #5 中的PDF 中的数字签名 - Adob​​e文档。

我已经看过很多来自 pypdf 和其他 python 库的文档和示例,它们将内容添加到 PDF 文件。但是,只要我看过pypdf 的所有示例,就会从一个文件中获取内容并将内容重建到另一个文件中。我们可以在不丢失或破坏最新版本的数字签名的情况下做到这一点吗?

您是否知道一种原始复制过去版本并重用过去版本的对象来构建新文档版本的方法?

或者有没有办法直接修改文档?我的意思是,加载一个用于读写的文档。

其他 pypdf / PyPDF2 示例可以找到:

正如您将看到的,它们都重建了从PdfReader(以前称为 PdfFileReader)读取 PDF 并使用PdfWriter(以前称为 PdfFileWriter)写入的 PDF。我的意思是,他们需要类似PdfStamper java 类的东西,带有一个可选的布尔附加参数,该参数将尊重以前的内容并增量更新现有的 PDF。

python pdf digital-signature pypdf

5
推荐指数
0
解决办法
953
查看次数

如何使用 mupdf(ios) 对 pdf 进行数字签名

我已成功将 mupdf 集成到我的项目中。现在我可以浏览pdf,添加新的注释和编辑,但我不知道如何将数字签名嵌入到pdf中。

任何人都可以建议我将数字签名嵌入到 pdf 中的步骤吗?

pdf digital-signature ios mupdf

5
推荐指数
0
解决办法
506
查看次数

“git show --show-signature”到底验证什么?

克隆远程 git 存储库并发出 后git show --show-signature,它表示签名良好。然后我更改了一些文件并测试了相同的命令,它仍然说签名良好。

上面的命令到底检查什么?验证克隆的git的正确方法是什么?开发者的意思是什么?

git authentication digital-signature

5
推荐指数
1
解决办法
6441
查看次数

PDFBox - 打开并保存签名的 pdf 会使我的签名无效

我正在尝试学习使用 Apache 的 pdfBox 来处理工作中的数字签名文档。在测试过程中,我创建了一个完全空的 pdf 文档。

然后我通过 Adob​​e reader 使用带有证书的签名功能对文档进行了签名。

我尝试使用 pdfBox 打开、保存和关闭签名文件,而不进行任何修改。但是,一旦我在 Adob​​e 中打开该文件,这些文件就不再有效。

Adobe 告诉我:“此签名中包含的格式或信息存在错误(支持信息:SigDict/Contents 非法数据)”

由于我没有修改文件的内容,直观上不应该有任何问题,签名应该仍然有效,但事实并非如此,我不知道解决方案是什么(谷歌搜索没有结果)。

我如何创建文档:

@Test
public void createEmptyPDF() throws IOException {
    String path = "path to file";
    PDDocument document = new PDDocument();
    PDPage page = new PDPage();
    document.addPage(page);
    document.save(path);
    document.close();
}
Run Code Online (Sandbox Code Playgroud)

然后我用 adobe 签名并通过以下方式传递:

 @Test
public void copySignedDocument() throws IOException {
    String path = "path to file";
    File file = new File(path);
    PDDocument document = PDDocument.load(file);
    document.save(file);
    document.close();

    //just opening and saving the …
Run Code Online (Sandbox Code Playgroud)

java pdf adobe digital-signature pdfbox

5
推荐指数
1
解决办法
6654
查看次数

如何对 PHP 源代码进行签名

我想分发一些 PHP 源代码,我需要提供一种方法来验证这些源代码没有被更改。

所以基本上我想对它们进行签名(如果可能的话使用 PHP),然后检查它们的签名(必须使用 PHP,它必须在 Linux 和 Windows 上都工作)。

我一直在挖掘,我发现的是:

如果任何人都可以验证这个过程(或指出更好的过程),那将是一个很大的帮助。

因为我试图给出我现在找到的理论解决方案,但是理论和实践之间应该是有差距的。特别是考虑到我对这个概念还很陌生,并且在安全方面保持稳固对于我的项目来说至关重要。我记得几年前使用苹果的签名过程是一件很痛苦的事,我对自己创建安全解决方案的能力没有信心。

php openssl code-signing digital-signature phar

5
推荐指数
1
解决办法
1932
查看次数

PDF 签名 - 嵌入单独签名的哈希值

我正在尝试使用两台服务器中的两个 Web 服务来签署 PDF 文档。但在 Adob​​e Reader 中却显示“文档自签名以来已被更改或损坏”。任何人都可以建议以下代码有什么问题吗?

过程 1. 服务器 A 上的 Web 服务 (WS),从 PDF 生成哈希值并将其发送到服务器 B 上的 WS 进行签名。2.服务器B上的WS对哈希进行签名。3. 服务器 A 上的 WS 接收签名哈希并嵌入 PDF 文档。

代码

生成哈希

 private PDFHashData generateHash(byte[] content, string userName)
    {
        PdfReader reader = new PdfReader(content);
        MemoryStream ms = new MemoryStream();

        PdfStamper stamper = PdfStamper.CreateSignature(reader, ms, '\0');
        PdfSignatureAppearance appearance = stamper.SignatureAppearance;
        appearance.SetVisibleSignature(new Rectangle(500, 150, 400, 200), 1, signatureFieldName);
        appearance.SignDate = DateTime.Now;
        appearance.Reason = Reason;
        appearance.Location = Location;
        appearance.Contact = Contact;
        StringBuilder buf = …
Run Code Online (Sandbox Code Playgroud)

c# pdf hash digital-signature

5
推荐指数
1
解决办法
4876
查看次数

如何在启用嵌入时间戳和 LTV 的情况下签署 PDF?

我正在尝试签署启用了时间戳和 LTV 的 pdf,以便它在 Adob​​e Reader 中显示如下:

正确签名

在英语中,这意味着“签名包含嵌入的时间戳”和“签名启用了 LTV”。这是我正在使用的代码:

PrivateKey pk = // get pk from an encrypting certificate created using encrypting file system
Certificate[] chain = ks.getCertificateChain(alias);

PdfReader reader = new PdfReader(src);
FileOutputStream fout = new FileOutputStream(dest);
PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0');

PdfSignatureAppearance sap = stp.getSignatureAppearance();

ExternalSignature signature = new PrivateKeySignature(pk, "SHA-512", "SunMSCAPI");
TSAClient tsc = null;
String url = // TSA URL
tsc = new TSAClientBouncyCastle(url, null, null, 4096, "SHA-512");

List<CrlClient> crlList = new ArrayList<>();
crlList.add(new CrlClientOnline(chain)); …
Run Code Online (Sandbox Code Playgroud)

java pdf timestamp itext digital-signature

5
推荐指数
1
解决办法
3933
查看次数

使用AndroidKeyStore身份验证的无限循环

当我使用需要用户身份验证才能使用密钥的 AndroidKeyStore 时,我的应用程序进入无限循环

.setUserAuthenticationRequired(true);
.setUserAuthenticationValidityDurationSeconds(60);
Run Code Online (Sandbox Code Playgroud)

假设使用用户私钥的操作要求设备已解锁,否则UserNotAuthenticatedException生成a。应用程序必须显示设备身份验证屏幕,并且密钥的下次使用才会起作用。

但是,就我而言,总是会强制UserNotAuthenticatedException应用程序显示解锁屏幕。它仅发生在某些设备中。我有两台运行 Android 6.0.1 的 Nexus 5,只有其中一台出现故障。

这是活动的主要代码

KeyPair keyPair;

private void attemptRegisterKey(){
    try{
        //generate key pair using AndroidKeyStore only once.
        if (keyPair != null)
            generateKeyPair(alias);

        //Sample Signature
        Signature sig = Signature.getInstance("SHA256withRSA");
        sig.initSign(keyPair.getPrivate());
        sig.update("hello".getBytes());
        byte signature[] = sig.sign();

    }catch  (UserNotAuthenticatedException e){
        //show Authentication Screen
        Intent intent = mKeyguardManager.createConfirmDeviceCredentialIntent(null, null);
        startActivityForResult(intent, REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS);
    }
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS) {
        // Challenge completed, …
Run Code Online (Sandbox Code Playgroud)

android infinite-loop digital-signature android-keystore

5
推荐指数
0
解决办法
493
查看次数

用于验证 JWT 的 X.509 扩展

我想创建一个 X.509 公钥证书来验证签名,尤其是。JWT 令牌。

我想知道将哪些属性和扩展属性设置为证书上的哪些值以限制其进行 JWT 验证。

不幸的是,X.509 扩展的规范非常冗长。因此,我也非常感谢您对可用的 X.509 扩展、属性及其含义的简要概述。

certificate pki digital-signature x509 jwt

5
推荐指数
1
解决办法
4896
查看次数