代码签名是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码签名是啥意思?相关的知识,希望对你有一定的参考价值。

哪里有啊

代码签名证书( WoSign Code Signing Certificate for Microsoft Authenticode )使得软件开发者能对其开发的软件代码进行数字签名,让其用户通过网络平台( 互联网或内部网 )下载时能确信此代码没有被非法篡改和来源可信,从而保护了代码的完整性、保护了用户不会被病毒、恶意代码和间谍软件所侵害,当然也就保护了软件开发商的利益,使得软件开发商能安全地快速地通过网络发布软件。
具体的可以参考:http://www.wosign.com/Products/WoSign_CodeSigning.htm
参考技术A Microsoft Authenticode 技术对安装程序、合并模块或 Cab 文件进行签名以确定这些文件的来源并验证文件没有被篡改。
必须首先获得数字证书才能使用这些功能。应用程序和部署清单必须使用公钥/私钥对进行强命名并使用 Authenticode 技术进行签名。可以使用 Windows 证书存储区的证书或密钥文件为清单签名。 代码签名的基础是PKI安全体系。不同数字认证公司提供的代码签名分类不同,根据VeriSign(iTrusChina)的代码签名证书又分为支持 PC 应用软件的代码签名证书和支持移动设备应用软件的代码签名证书两大类,主要包括:
(1) 代码签名数字 ID(Code Signing Digital IDs) : 主要包括:微软代码签名证书 ((Microsoft Authenticode Digital ID) :数字签名 .exe, .dll, .cab, .ocx(ActiveX) ; Java 代码签名证书 (Sun Java Signing Digital ID) :数字签名 Sun J2SE/J2EE 的 Java Applet 文件,以及数字签名 J2ME MIDlet Suite 文件,支持业界最多型号和最多品牌的手机。
(2) 微软产品徽标认证证书 ("Designed for Windows logo" Digital IDs) :用于数字签名微软 Windows Logo 认证的各种软件、硬件驱动程序等,提交已经签名的软件给微软测试认证,还包括微软 Windows Hardware Quality Labs (WHQL) testing programs(Windows 硬件质量实验室测试计划 ) 认证。
(3) 微软移动代码签名证书 (Authenticated Content Signing for Microsoft Windows Mobile)(ACS):支持使用微软 Windows Mobile 和 SmartPhone2002/2003 移动终端操作系统的移动应用软件的非特权签名和特权签名,以确保移动下载的软件代码在移动终端 ( 如智能手机和 PDA) 的安全。
参考技术B www.qzoner.com

函数签名中变量名前的 * 和 ** 是啥意思? [复制]

【中文标题】函数签名中变量名前的 * 和 ** 是啥意思? [复制]【英文标题】:What do * and ** before a variable name mean in a function signature? [duplicate]函数签名中变量名前的 * 和 ** 是什么意思? [复制] 【发布时间】:2012-07-04 03:02:39 【问题描述】:

可能重复:Understanding kwargs in Python

看过一段python代码,不知道这段代码中*和**是什么意思:

def functionA(self, *a, **kw):
   // code here

我只知道 * 的一种用途:提取它对方法或构造函数的参数的所有属性。

如果上述功能是这样,那么其余的:** 是什么?

【问题讨论】:

docs.python.org/tutorial/controlflow.html#keyword-arguments 【参考方案1】:

函数头内:

* 将所有位置参数收集在一个元组中。

** 收集字典中的所有关键字参数。

>>> def functionA(*a, **kw):
       print(a)
       print(kw)


>>> functionA(1, 2, 3, 4, 5, 6, a=2, b=3, c=5)
(1, 2, 3, 4, 5, 6)
'a': 2, 'c': 5, 'b': 3

函数调用中

* 将列表或元组解包到位置参数中。

** 将字典解压缩为关键字参数。

>>> lis=[1, 2, 3, 4]
>>> dic='a': 10, 'b':20
>>> functionA(*lis, **dic)  #it is similar to functionA(1, 2, 3, 4, a=10, b=20)
(1, 2, 3, 4)
'a': 10, 'b': 20

【讨论】:

有趣的功能,解释清楚。。现在可以看懂代码,也许有一天会在我自己的代码中找到它的用途。有关位置参数与关键字参数的清晰解释,另请参阅this answer【参考方案2】:

** 采用指定的参数名称并将它们放入字典中。所以:

def func(**stuff):
    print(stuff)

func(one = 1, two = 2)

将打印:

'one': 1, 'two': 2

【讨论】:

【参考方案3】:

** 表示函数的命名参数。

$ cat 2.py
def k(**argv):
    print argv

k(a=10, b = 20)

$ python 2.py
'a': 10, 'b': 20

argv 是一个包含函数所有命名参数的字典。

你也可以反转它。您可以将字典用作一组参数 对于函数:

def k(a=10, b=20):
  print a
  print b

d='a':30,'b':40
k(**d)

会打印

30
40

【讨论】:

以上是关于代码签名是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

电子签名是啥?

用PHP做微信支付签名错误,请教一下这个是啥原因

证书上的“签名算法”到底是啥意思?使用哪种签名算法来签署我的证书?

这个函数的签名是啥意思?

函数签名中的限制是啥意思?

`undefined` 的类型签名在 Haskell 中是啥意思?