精华内容
下载资源
问答
  • itextsharp 数字签名白皮书配套应用代码 该代码C#示例 详细解释如何通过itext对pdf文件签名和验证操作
  • 不过最近在研究applet的签名后,有了点收获,可以通过签名jar文档来达到这样的控制策略,下面是我在实际实验过程中的一些心得和体会,跟大家一起分享下.(注:如果转载此文,请注明出处和作者,尊重作者的劳动成果,谢谢) 一...

       最近在研究applet,打算使用applet来开发一个上传文件上传控件,之前因为一直觉得applet的沙箱控制导致applet不能主动的访问客户端的资源,所以也曾因此而放弃.不过最近在研究applet的签名后,有了点收获,可以通过签名jar文档来达到这样的控制策略,下面是我在实际实验过程中的一些心得和体会,跟大家一起分享下.(注:如果转载此文,请注明出处和作者,尊重作者的劳动成果,谢谢

    一、压缩你的class类文件为jar包 
    1.假设你的需要压缩的类文件存在的包为:cn.mbq.test1和cn.mbq.test2 
    2.进入你的classes目录,在DOS窗口中执行命令:jar cf mytest.jar cn.mbq.test1 cn.mbq.test2 
    3.执行命令后你会在当前目录中找到mytest.jar文件,这个就是刚才生成的档案文件。你可以修改它的后缀为rar,然后使用winrar压缩程序打开它查看看是否正确。 


    二、使用keytool工具生成密匙库 
    1.keytool工具位于${java_home}/bin目录下; 
    2.在DOS窗口中执行命令:keytool -genkey -keystore mytest.store -alias mbq 
      注意:mytest.store 是你的密匙库的名称,可以随意修改,后缀请不要修改! 
            mbq 为别名,这个也可以改成自己的名称 
    3.执行上述命令后,DOS窗口中会提示你输入keystore的密码、你的姓名、组织单位等等信息。这里要注意的是输入密码请记住,后面要用到的。在最后,我们输入y确认信息。然后再直接回车设置mbq的主密码和store密码一致即可! 


    三、使用keytool工具导出签名时用到的证书 
    1.在DOS窗口中执行命令:keytool -export -keystore mytest.store -alias mbq -file mbq.cert 
      注意:mytest.store 就是第二步生成的密匙库名称 
            mbq 也是在第二步中我们指定的别名 
            mbq.cert 为我们生成的证书的名称,可以自己修改名称,注意后缀不要改 
    2.命令执行成功,我们会在当前目录下找到一个mbq.cert文件,这个就是我们刚才生成的证书。 


    四、使用jarsigner工具签名jar压缩文档 
    1.jarsigner工具位于${java_home}/bin目录下; 
    2.在当前DOS窗口中执行命令:jarsigner -keystore mytest.store mytest.jar mbq 
      注意:mytest.store 就是我们在第二步中生成的密匙库名称 
            mytest.jar 就是我们这第一步压缩的jar文档 
            mbq 是提供者的名称,我们这里设置为我们的别名 


    五、创建mytest.policy文件 
    1.在当前目录下创建一个mytest.policy文件,其内容如下: 
    keystore"file:mytest.store","JKS"; 
    grantsignedBy"mbq" 

    permission java.io.FilePermission"<<ALLFILES>>","read"; 
    }; 
    2.这个文件的意思就是说让所有由mbq签名的applet都可以对本地的所有文件进行读操作。 


    六、归档文件 
        通过上述的五个操作后,我们会在当前目录中找到如下几个文件:mytest.jar-签名后的jar文档、mytest.store-密匙库、mbq.cert-证书、mytest.policy-访问策略文件。如果没有这些文件,那么你的applet数字签名过程就没有正确的完成,请检查上述的操作。以后,如果对打包的java文件做了修改,那么就需要重新签名一次才可以! 


    七、在网页中运行applet 
    1.假设你的applet中的主启动类为:cn.test.TestApplet.class;整个前面生成的档案文件、证书啊存储在目录:d:\test\myapplet下; 
    2.建立一applet_test.html文件存放在任何目录下都可以,然后内容如下: 

    Java代码 
    1. 1 <HTML>...</HTML><HTML>   
    2. 2 <BODY>...</BODY><BODY>   
    3. 3 <APPLET CODEBASE="d:\test\myapplet" CODE="cn.test.TestApplet.class" ARCHIVE="mytest.jar" WIDTH=200 HEIGHT=100 name="myapp">   
    4. 4 </APPLET>   
    5. 5 </BODY>   
    6. 6 </HTML>  


        注意:其中的CODEBASE就是你的类的基础目录,CODE也就是你的APPLET的启动主类,ARCHIVE也就是签名后的JAR文档。 
    2.然后在IE中打开该html文件,那么会看到IE提示你是否信任该插件,也就是说我们的证书起作用了,然后确定运行后,就可以在页面上看到applet的运行效果了。 

        但是由于SUN和MS的问题,目前IE并不支持最新的JRE,而是使用MS自己开发的JRE,所以这个也是影响APPLET发展壮大的一个原因。而且正是由于这个原因,SUN的java-plugin技术才会出现。使用SUN的java-plugin技术我们就可以在applet中使用最新的JAVA类库了。由于IE在遇到APPLET标签的时候会调用自己的JRE,但是如果客户机器上安装的JRE不是我们想要的版本,那么就会出错了。所谓java-plugin技术就是利用IE的插件机制来制定我们想要的JRE,我们可以在IE中使用OBJECT标签来调用APPLET,这样就不会引用MS的JRE了,从而达到我们想要的效果,而且java-plugin技术不仅仅支持IE,还支持Navigator等浏览器。不过我们需要编写比较复杂的HTML代码了,但是这一且SUN已经帮我们做到了,呵呵,在JDK1.4或更高的版本中SUN提供了一个HtmlConverter.exe工具来帮助将包含applet标签的html转换成包含OBJECT和EMBED标签的html代码,该工具位于${java_home}/bin目录下,对于1.4以前的版本该工具则是单独提供的,不过现在几乎都是1.4或1.5甚至更高版本的JDK了吧,呵呵。 

        该工具很简单,是图形化的工具,我们直接运行即可。比如我将上面的包含applet的html转换后(比如我选择只支持IE的),其代码变成了如下: 

    Java代码 
    1. 01 <HTML>...</HTML><HTML>   
    2. 02 <BODY>...</BODY><BODY>   
    3. 03 <!--"CONVERTED_APPLET"-->   
    4. 04 <!-- HTML CONVERTER -->   
    5. 05 <object   
    6. 06     classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"   
    7. 07     codebase = "http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=5,0,0,3"   
    8. 08     WIDTH = 200 HEIGHT = 100 NAME = "myapp" >   
    9. 09     <PARAM NAME = CODE VALUE = "cn.test.TestApplet.class" >   
    10. 10     <PARAM NAME = CODEBASE VALUE = "d:\test\myapplet" >   
    11. 11     <PARAM NAME = ARCHIVE VALUE = "mytest.jar" >   
    12. 12     <PARAM NAME = NAME VALUE = "myapp" >   
    13. 13     <param name = "type" value = "application/x-java-applet;version=1.5">   
    14. 14     <param name = "scriptable" value = "false">   
    15. 15 </object>   
    16. 16 <!--   
    17. 17 <APPLET CODEBASE="d:\test\myapplet" CODE="cn.test.TestApplet.class" ARCHIVE="mytest.jar"   
    18. 18 WIDTH=200 HEIGHT=100 name="myapp">   
    19. 19 </APPLET>   
    20. 20 -->   
    21. 21 <!--"END_CONVERTED_APPLET"-->   
    22. 22 </BODY>   
    23. 23 </HTML>  


        注意其中的OBJECT标签,可以看到APPLET标签已经被注释掉了。其中PARAM NAME=NAME这一行中的myapp就是我们applet应用程序的名称,在IE提示的确认运行中显示的就是这个名称了,我们可以改为自己的公司或组织的名称。然后提示的提供者也就是我们在签名时用到的名称了。 

        另外,还要特别注意的就是这个包含OBJECT标签的html页面必须和你的mytest.jar压缩文档放在同一个目录下,这样才可以正确的加载,否则会一直报ClassNotFound的异常的,即使我们在OBJECT标签中指定了CODEBASE也不行,这个是我在测试的时候遇到的问题! 


    八、在Internet上应用签名的applet 
        如果要把applet部署在网络上,那么最好是采用OBJECT标签的形式,同时也要兼顾采用EMBED标签来支持诸如FF等浏览器。我们把已签名了的mytest.jar和我们的网页放在同一个目录下,至于其他的如mytest.store和mbq.cert可以不用放在一起,至少我在测试的过程中没有放到一起也不会出错,而且在不同的机器上运行的也非常好,可以读取客户端机器的资源!另外,也发现mytest.policy其实也没什么用处,因为这是参考网络上的,而且他们的版本都是1.3左右,所以估计是版本低的缘故吧! 
    展开全文
  •  4、签名及验证  //读取密钥库:  FileInputStream is=new FileInputStream("C:\\Inetpub\\runcerts.keystore");  KeyStore ks=KeyStore.getInstance("BKS","BC");  ks.load(is,"123456".toCharArray...

    一些人说android只支持BKS证书。不知道真还是假,所以首先创建了BKS证书。

    步骤:

    1、下载bcprov-jdk16-141.jar,放到\jre\lib\ext目录下

    2、修改文件  jre6\lib\security\java.security, 在文件中添加:  security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider

       在这个文件中找到security.provider字样,后面序号递增,本机递增到10

    3、创建keystore。命令:

          keytool -genkey -alias <别名> -keypass <密钥口令>  -keyalg Test -keysize 1024 -validity 365 -keystore <库文件名,如runcerts.keystore> -storepass <证书库密码> -dname "cn=testUsr, ou=产品部, o=XXX公司, c=CN, S=shandong" -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider

     4、签名及验证

       //读取密钥库:

       FileInputStream is=new FileInputStream("C:\\Inetpub\\runcerts.keystore");
        KeyStore ks=KeyStore.getInstance("BKS","BC");
        ks.load(is,"123456".toCharArray());
       is.close();
      

    //读取私钥
     PrivateKey priKey1=(PrivateKey)ks.getKey("test2", "123456".toCharArray());
      privateKeyString =getKeyString(priKey1);

    //签名
       SignText=DataSign(plainText,privateKeyString); 

    //以下验证  
        //获得证书

      Certificate certificate=ks.getCertificate("test2");
      //获得证书
      PublicKey publicKey1=certificate.getPublicKey();
      
      publicKeyString=getKeyString(publicKey1);
      

    //验证
      byte[]plainText1="Happy New Year!!Email:@qq.com".getBytes(); 
      boolean verySign=verify(plainText1,publicKeyString,SignText);
      String s2 = new Boolean(verySign).toString();
      System.out.print("验证结果:"+s2+"/n");
    展开全文
  • 数字签名应用 电子投票 盲签名 群签名 数字签名新技术
  • Android应用数字签名详解

    万次阅读 2015-11-26 15:23:26
    查看第三方应用或Android系统应用签名证书信息概述Android系统要求所有的应用必须被证书进行数字签名之后才能进行安装。Android系统通过该证书来确认应用的作者,该证书是不需要权威机构认证的,一般情况下应用都是...

    目录


    概述

    Android系统要求所有的应用必须被证书进行数字签名之后才能进行安装。Android系统通过该证书来确认应用的作者,该证书是不需要权威机构认证的,一般情况下应用都是用开发者的自签名证书,该证书是确保应用程序和应用程序作者之间建立信任关系,而不是用来决定用户可以安装哪些应用程序。

    应用进行数字签名的好处和注意事项如下:

    1. Android所有的应用程序必须要有数字证书签名,Android系统不会安装一个没有数字证书签名的程序。
    2. Android系统中,系统app使用的是平台证书签名,而第三方app一般使用开发者的自签名证书。
    3. Release版本的第三方app(例如淘宝、支付宝、微信),必须使用一个合适私钥生成的数字证书来给程序进行签名,并且保证每次的迭代新版本都是使用相同的证书进行数字签名。不然的话,新版本和旧版本的数字证书不一致,Android系统会认为这是两个不同的app,导致更新等操作失败。
    4. 数字证书是存在有效期的,这也决定了app的预计生命周期,如果数字证书超期失效,则应用无法安装或者无法正常升级。
    5. Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。 不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。

    数字签名证书生成方法

    声明:实验生成的keystore只是作为演示使用,并没有实际应用到项目中。大家参考时也要根据我的博客手工修改部分参数,切忌无脑照抄!

    Android是使用标准的java工具keytooljarsigner来生成数字证书,而目前市场上第三方IDE(Android Studio和Eclipse)都是通过图形化系统帮我们封装了这两个工具的具体执行步骤。
    接下来,我会介绍两种生成数字签名证书的方式,分别通过命令行和Android Studio进行生成。


    命令行工具(keytool&&jarsinger)

    由于Android的数字签名证书是用java标准工具生成的(路径为:$JAVA_HOME/bin目录下),那我们当然可以在命令行生成数字证书了,具体方法如下。

    1. 使用keytool生成数字签名证书。示例命令如下:
    keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

    参数详解:

    • -keystore : 指定生成数字签名证书的文件名和路径。
    • -alias:指定证书的别名。
    • -keyalg:指定生成证书所需要的算法。
    • -keysize:指定证书大小。
    • -validity:指定证书的有效期,单位为天。

    示例截图如下:
    keytool

    1. 使用生成的keystore,利用jarsinger为应用进行签名。示例命令如下:
    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name

    参数详解:

    • -sigalg:签名算法的名称。
    • -digestalg:摘要算法的名称。
    • -keystore : 指定签名证书的位置。
    • alias_name:签名证书的别名。

    示例截图如下:

    jarsigner

    1. google官方同时推荐使用zipalign工具对签名的apk进行优化。该工具位于Android SDK的/build-tools/版本号/目录下。示例命令如下:
    zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk

    示例截图如下:
    zipalign


    Android Studio

    使用命令行的方式可以显得geek,并且让我们更多的了解实现细节。但是,平时应用开发中更多的是注重效率,因此,我们可以采用目前google官方推荐的AS帮我们实现应用数字签名功能。具体步骤如下。

    1. 选择编译Module->Build->Generate Signed APK->选择编译Module->Next。

    Generate Signed APK

    1. 选择Create new,创建一个新的数字签名证书。
      Create new

    2. 填写证书信息。
      New Key Store

    填写完成之后,我们点击OK,就可以生成我们的数字签名证书了。

    上述工作完成后,我们就生成了数字签名证书,但是还没有对我们的apk进行签名。想要用生成的数字证书对apk进行签名,还需要修改当前Module的build.gradle文件,增加签名命令,具体内容如下:

    android {
        compileSdkVersion 19
        buildToolsVersion "19.1.0"
    
        defaultConfig {
            applicationId "××××××"
            minSdkVersion 8
            targetSdkVersion 19
        }
    
        signingConfigs {
            debug {
                // 配置debug版本的数字签名证书
                storeFile file("/home/wzy/Documents/keystore/simple-weather.jks")
                storePassword "123456"
                keyAlias "release-key"
                keyPassword "123456"
            }
            release {
                // 配置release版本的数字签名证书(为了方便,这里的release版本和debug版本共用一个数字签名证书)
                storeFile file("/home/wzy/Documents/keystore/simple-weather.jks")
                storePassword "123456"
                keyAlias "release-key"
                keyPassword "123456"
            }
        }
    
        buildTypes {
            release {
                // 配置release版本的数字签名
                signingConfig signingConfigs.release
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
            debug {
                // 配置debug版本的数字签名
                signingConfig signingConfigs.debug
            }
        }
        lintOptions {
            abortOnError false
        }
    }

    当然,上述命令Android Studio也提供了图形化界面进行操作,可以直接在Module Settings进行设置,截图如下(ps:我还是喜欢手动配置)。
    signing


     小结

    Android应用可以在debug和release两种模式下进行数字证书签名。在Android Studio中,我们直接点击Run使用的是debug模式,我们在命令行敲击bash gradle :$module_name:build使用的是release模式。
    debug模式下签名是为了开发调试,release模式下进行签名则是为了正式发布。
    Android SDK提供了一个不需要密码的证书用于在debug模式下进行签名调试,默认存储在$HOME/.android/debug.keystore,但是release版本必须使用自己的数字签名证书。


    查看应用签名信息

    首先,为什么我们需要查看应用签名信息呢?

    是因为,很多第三方提供的SDK服务为了区分应用必须让我们提供数字签名的SHA1值,例如百度地图定位SDK、高德地图定位SDK,为了使用这些服务,我们就必须学会如何查看应用签名信息。


    查看自签名证书的信息

    我们自签名的证书,由于keystore文件存在于我们可访问的路径下,我们可以直接通过keytool命令去查看证书信息。

    示例命令如下:

    keytool -v -list -keystore  my-release-key.keystore

    输入命令后,是需要输入签名密码的。

    参数详解:

    • -list:列出密钥库中的条目。
    • -keystore:数字证书位置。

    示例截图如下:
    release-key


    查看第三方应用或Android系统应用签名证书信息

    其实系统应用对开发者来说也是第三方应用,但是只要我们能拿到它的apk,就能知道它的应用签名信息。以我目前使用的乐运动apk为例(com.oxygen.www_3.0_40.apk)。

    1. 用unzip命令解压apk。
    unzip com.oxygen.www_3.0_40.apk
    1. 进入META-INF文件,找到其中的CERT.RSA文件。
    2. 使用keytool工具进行信息查看,具体命令如下:
    keytool -printcert -file CERT.RSA

    参数详解:

    • -printcert:打印证书内容

    示例截图如下:
    乐运动

    展开全文
  • 数字签名原理及其应用

    万次阅读 多人点赞 2017-06-25 15:40:34
    签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。 我们知道,手写签名之所以不能伪造,是因为每一个人的...而数字签名

    序言


    签名的作用简单来说就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。

    我们知道,手写签名之所以不能伪造,是因为每一个人的笔迹都是独一无二的,即使模仿,也可以通过专家鉴定分别出来。而不可抵赖,是因为每个人的笔迹都有固定特征,这些特征是很难摆脱的。

    正是这两点特性使得手写签名在日常生活中被广泛承认,比如签合同、借条等等。

    而数字签名,它的作用跟手写签名其实是类似的,用来证明某个消息或者文件是本人发出/认同的。我国在2005年就已经施行《电子签名法》,确立了电子签名(包括但不限于数字签名)的法律效力。

    那么数字签名又是靠什么保证不可伪造和不可抵赖两个特性呢?

    答案是利用公钥加密系统。常用的签名算法有

    • RSA,基于大整数分解问题
    • DSA,基于离散对数问题
    • ECDSA,属于DSA的一个变种,基于椭圆曲线上的离散对数问题

    其中RSA是上述几个算法中最容易实现数字签名的。

    公钥加密与数字签名


    数字签名的要求是,只有我自己能签我的名字,其他人能验证我的签名,但是不能伪造我的签名。

    我们知道,公钥加密系统里面,使用公钥加密,就可以使用私钥来解密;使用私钥加密,也可以使用公钥来解密。消息加密利用的是前者,数字签名利用的是后者。

    用私钥对消息进行加密,得到密文,其实就是一个签名的过程。因为私钥顾名思义是私密的,而且是唯一的,只有我自己知道,别人无法在不知道我的私钥的情况下模仿我的签名(不可伪造)。而公钥是公开的,其他人可以很容易地使用公钥去尝试解密生成的密文,然后就可以知道这个签名是不是我签的(不可抵赖)。

    当然,在数字签名的过程中,对原文的保密性没有要求,所以加密、解密这样的名词在这个场景中并不准确,用签名解签会更合适。

    实际应用中,由于直接对原消息进行签名有安全性问题,而且原消息往往比较长,直接使用RSA算法进行签名速度会比较慢,所以我们一般对消息计算其摘要(比如SHA-256等),然后对摘要进行签名。只要使用的摘要算法是安全的(MD5、SHA-1已经不安全了),那么这种方式的数字签名就是安全的。

    一个具体的签名过程如下:

    1. 小明对外发布公钥,并声明对应的私钥在自己手上
    2. 小明对消息M计算摘要,得到摘要D
    3. 小明使用私钥对D进行签名,得到签名S
    4. 将M和S一起发送出去

    验证过程如下:

    1. 接收者首先对M计算摘要,得到D’
    2. 使用小明公钥对S进行解签,得到D
    3. 如果D和D’相同,那么证明M确实是小明发出的,并且没有被篡改过

    应用


    手写签名可以用来签合同,那么数字签名可以用来干什么呢?

    网站认证

    首先最常见的用处就是用来认证一个网站的身份。
    比如我打开百度,百度是怎么保证显示在我眼前的网页就一定是百度生成的,不是其他人修改的呢?就是借助数字签名来实现的。

    用IE浏览器打开百度,点击地址栏旁边的小锁,再点击查看证书,就可以看到百度主页的数字签名证书了。所谓证书,其实是对公钥的封装,在公钥的基础上添加颁发者、有效期等信息。
    网站认证

    “签名算法”一栏可以看到,它使用的是sha256RSA,也就是使用SHA-256计算摘要,然后使用RSA对摘要进行签名。而在“公钥”一栏则保存着该证书的“本体”,用于验证签名的RSA公钥。

    代码签名

    而除此之外,还有个地方我们经常碰到数字签名的——代码签名。

    如果Windows上的可执行程序程序来源于正规公司,那么通常它会有代码签名,用于确保其来源可靠且未被篡改。以QQ为例,它的数字签名是这样的。
    代码签名

    如果某个程序没有数字签名,那么它的安全性往往就没有保证;如果它有数字签名,但是显示“此数字签名无效”,那么这个程序要么被篡改了要么损坏了,不管哪种都不应该尝试执行它。

    但是数字签名不是万能的。事实上不管是浏览器的数字签名还是代码的数字签名,都依赖于系统或者浏览器内置的根证书(公钥),如果电脑本身已经中毒或者被入侵,那么这些根证书可以被轻易添加或者修改,这时的数字签名的安全性可以说是荡然无存了。

    即使是签名有效的软件,并不能保证签名的公司不耍流氓,因为申请合法证书的门槛其实并不高,很多流氓软件都是由一些不知名的小公司搞出来的;或者某些小公司篡改知名软件,加入自己的代码,然后将原来的签名替换成自己的签名,这些数字签名在系统看来也是有效的,但是我相信你不会想运行这些软件的。如果对安全性要求比较高,可以手动或者借助工具吊销那些不太安全的根证书,具体方法已经超出本文讨论范畴,读者可以自行寻找。

    比特币

    比特币是一种匿名的数字货币,它的身份认证是基于ECDSA。比特币的账户地址就是对公钥等信息计算摘要得到的,向全世界公布。比特币账户地址不包含你的个人信息(姓名、住址、电话号码之类的),确认你是账户拥有者的唯一办法就是看你有没有账户对应的私钥。如果账户私钥丢失,那么你将永远地失去里面的钱;一旦私钥被黑客盗取,账户里面的钱就完全归黑客所有。

    #参考文献

    Microsoft TechNet: Digital Signatures
    Wikipedia: Digital Signature Algorithm
    Wikipedia: Elliptic Curve Digital Signature Algorithm

    展开全文
  • 数字签名应用

    千次阅读 2016-07-31 21:54:01
    a) 公钥加密系统允许任何人在分送信息的时候使用公钥进行加密,数字签名能够让信息接受者确认信息发送者的身份,接受者只能在密码系统尚未破译的情况下才有理由确信发送者的真实身份 b) 鉴权的重要性尤其体现在...
  • 数字签名应用示例

    2020-04-19 15:18:03
    最近要开发一个对外部系统提供服务的接口,计划用数字签名进行接口的安全性校验,网上查找资料后,写了一个示例如下 前言 示例项目中用到的算法及jar包版本如下: 消息摘要算法为MD5 签名算法为SHA256withRSA...
  • 数字签名应用实例

    千次阅读 2018-09-24 20:30:53
    在这样的情况下,就可以使用数字签名,即该组织可以对警告信息的文件施加数字签名,这样一来世界上所有人就都可以验证警告信息的发布者是否合法。 消息发布的目的是尽量让更多的人知道,因此我们没有必要对信息进行...
  • 关于数字签名应用

    2016-04-24 15:39:58
    数字签名这个东西是用来进行通信的一种验证方式,但是与传统相区别的是数字签名的作用是用于验证,也就是说数字签名的目的并不是让可能在网络环境下的第三方无法获得传输的信息,而是保护信息在传输中的正确性,即使...
  • 目录创建数字签名创建自签名证书确定待打包应用的颁发者(Subject)使用 New-SelfSignedCertificate 命令创建证书导出证书打包应用程序使用SignTool进行签名使用SignTool确定哈希算法对APP进行签名常见错误及解决 ...
  • 1 数字签名介绍 1.1 背景 1.2 机制 1.3 使用 1.3.1 ssh-keygen 1.3.2 keytool 2 Android使用数字签名的场景 2.1 未签名的APK VS 签名后的APK 2.2 应用层面:Android对APK的签名要求 2.2.1 Android拒绝安装...
  • 数字签名的原理和应用

    千次阅读 2020-12-15 09:15:05
    1.数字签名的原理 在日常生活中,签名的意义就是签完你的名后,别人可以知道这件事是你做的,而由于每个人笔迹不同,你也无法否认这个名字是你签的。同真实的签名一样,数字签名也是用来证明某条信息是本人发的,...
  • 数字签名

    2011-10-02 09:10:05
    数字签名应用的各程序及生成CAB包程序打包提供。
  • 数字签名 数字签名(又称公钥数字签名、电子签章等)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个...
  • 数字签名
  • 数字签名的原理及其应用

    千次阅读 2018-03-24 00:27:26
    概述 我们日常都亲自签过各种名,...数字签名和这个类似,是用来保证一段信息不可伪造而且使这段信息产生者不可抵赖。 例如小明和二狗互不相识,碰巧在各自家里组局打王者荣耀,小明总抢二狗的蓝爸爸,二狗怒了...
  • 先准备好要签名的文件。...一 数字签名一个文件的方法A 1 使用如下命令对message.txt进行数字签名 [root@centos gnupg-2.1.4]# gpg -a -b message.txt You need a passphrase to unlock the s...
  • 数字签名原理及其应用详解

    万次阅读 多人点赞 2018-02-22 10:35:19
    序言签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。我们知道,手写签名之所以不能伪造,是因为每一...而数字签名,...
  • 刚接触Android时一直以为应用签名就是apk签名文件,后来工作中遇到客户需要应用签名并给出了示例,并非apk签名文件中的内容。当时一脸懵逼呀。 后通过网络查找终于查到一个与众不同的文章,现记录如下: ...
  • 数字签名

    2019-08-03 21:08:44
    数字签名 数字签名(又称公钥数字签名)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法...数字签名是非对称密钥加密技术与数字摘要技术的应用。 原理 所谓的数字签...
  • 数字签名原理及应用 1、实验要求 (1)总结数字签名的原理; (2)利用RSA实现数字签名; (3)实现一个读取a.txt文件内容进行签名,把签名信息写入b.txt; (4)选做作业,利用前面所给的RSACryptography1.java、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,875
精华内容 1,550
关键字:

数字签名应用