当前位置:首页 » 安卓系统 » 什么是android签名

什么是android签名

发布时间: 2022-12-31 17:30:22

❶ Android签名有什么作用

Android签名有什么作用

最简单直接的回答: 系统要求的。
Android系统要求每一个Android应用程式必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程式没有经过数字签名,是没有办法安装到系统中的!
Android通过数字签名来标识应用程式的作者和在应用程式之间建立信任关系,不是用来决定终端使用者可以安装哪些应用程式。
这个数字签名由应用程式的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程式包自我认证的。

平时我们的程式可以在模拟器上安装并执行,是因为在应用程式开发期间,由于是以Debug面试进行编译的,因此ADT根据会自动用预设的金钥和证书来进行签名,而在以释出模式编译时,apk档案就不会得到自动签名,这样就需要进行手工签名。给apk签名可以带来以下好处:1.、应用程序升级:如果你希望使用者无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程式。如果你采用了不同的证书,那么系统会要求你的应用程式采用不同的包名称,在这种情况下相当于安装了一个全新的应用程式。如果想升级应用程式,签名证书要相同,包名称要相同!2、应用程式模组化:Android系统可以允许同一个证书签名的多个应用程式在一个程序里执行,系统实际把他们作为一个单个的应用程式,此时就可以把我们的应用程式以模组的方式进行部署,而使用者可以独立的升级其中的一个模组3、程式码或者资料共享:Android提供了基于签名的许可权机制,那么一个应用程式就可以为另一个以相同证书签名的应用程式公开自己的功能。以同一个证书对多个应用程式进行签名,利用基于签名的许可权检查,你就可以在应用程式间以安全的方式共享程式码和资料了。不同的应用程式之间,想共享资料,或者共享程式码,那么要让他们执行在同一个程序中,而且要让他们用相同的证书签名。

word 电子签名有什么作用?

对文件进行数字签名与签署纸质文件的原因大致相同。数字签名通过使用计算机加密来验证 (身份验证:验证人员和产品所宣告的身份是否属实的过程。例如,通过验证用于签名程式码的数字签名来确认软体发行商的程式码来源和完整性。)数字资讯,如文件、电子邮件和巨集。数字签名有助于确保:
真实性 数字签名有助于确保签署人的身份与宣告的相符。
完整性 数字签名有助于确保内容在经过数字签名之后未经更改或篡改。
不可否认 数字签名有助于向所有方证明签署内容的有效性。“否认”指签名人否认任何与签署内容有关系的行为。
为了确保以上各项,必须由内容建立者使用满足下列条件的签名对内容进行数字签名:
该数字签名有效 (有效:一种证书状态,根据证书颁发机构的资料库对证书进行检查后发现它是合法的、最新的,而且没有过期或被吊销。由有效证书签名且签名后没有更改的文件被视为有效文件。)。
与该数字签名关联的证书 (证书:一种证明身份和真实性的数字方法。证书由证书颁发机构颁发,而且和驾驶执照一样,也可能过期或被吊销。)有效(没有过期)。
作为释出者的签名人或公司可信 (信任:表示您是否信任证书颁发的受体(个人或组)。预设设定是“继承颁发者的信任关系”,也就是因为对颁发者(通常是证书颁发机构)的信任而信任证书。)。
与数字签名关联的证书由有声望的证书颁发机构 (CA) (证书颁发机构 (CA):一个商业组织,它颁发数字证书,跟踪被颁发证书的人员,对证书签名以验证其有效性,并跟踪被吊销或已过期的证书。) 颁发给签名释出者。

信用卡签名有什么作用

相当于合同 纠纷时有依据 平常是没什么拉

手机软体签名有什么作用

目前有实力的公司或确实有需要的公司会购买诺基亚的高阶权
限证书,通常是安全厂商.这类公司的软体不需要我们自签名,还有许多
软体都是一般的应用软体,和系统没什么关联,它们许可权很低,不可能存
在危险,比如网路电视软体,阅读软体,QQ,主题等都不需要签名.需要签
名的软体软体大致可分为以下几种情况:(1)随开机启动的,比如来电
通,A4自签名版;(2)不要你操作可以自动执行的,比如屏保程式;(3)进入
系统资料夹修改的,比如大部分后期汉化的软体等,再次安装汉化补丁
时就需要签名.

可靠的电子签名有什么作用?

依据《中华人民共和国电子签名法》第十四条:“可靠的电子签名与手写签名或者盖章具有同等的法律效力。”由此可见,只有使用“可靠的电子签名”,电子合同才有可能具有与纸质合同同等的法律效力,即书证效力。

C#工程档案签名有什么作用

主要是防止篡改破解。比如你写的程式包括1个exe和若干dll,exe花费了很多工作量,而且上面有你们公司的标识。现在来了个黑客,反编译了某个dll,发现很轻易就改动了里面某个dll,比如注册码的dll,导致绕开了验证码。再来个黑客,把干好事的dll改成了删掉所有磁盘上档案的功能,导致使用者把你公司拉进黑名单。
如果签了名,就可以保证exe只能呼叫你自己写的dll,他们篡改了你的dll,exe会报错,报找不到dll。

驱动程式签名有什么作用啊?

可以确认驱动程式与Windows 无相容性问题(不过不代表没有签名的驱动就一定不相容Windows)
新年快乐

android签名工具干什么用的

给apk签名用的。但是你要有key,或者自己用eclipse生成一个。签名有一个很重要作用就是防止程式释出后被篡改签名一般用私钥,私钥签名以后会生成harsh值序列,公钥验证的时候(手机上),会根据档案内容再生成一次harsh序列,如果和apk中的harsh序列相同,说明apk释出后没有被篡改过

禁止驱动程式强制签名有什么作用

没有坏处。
驱动程式签名又叫做驱动程式的数字签名,它是由微软的Windows硬体装置质量实验室完成的。硬体开发商将自己的硬体装置和相应的驱动程式交给该实验室,由实验室对其进行测试,测试合格后实验室将在其驱动程式中新增数字签名。由于数字签名是由微软完成的。
使用有数字签名的驱动程式将的好处:
安全保障 由于数字签名是针对整个驱动程式的所有软体进行的,所以在完成签名后再对驱动程式进行任何更改都会导致签名无效,这样就避免了在驱动程式中新增恶意程式码传播病毒等恶意程式的可能性。

❷ Android APP的签名

Android APP的签名

Android项目以它的包名作为唯一的标识,如果在同一部手机上安装两个包名相同的APP,后者就会覆盖前面安装的应用。为了避免Android APP被随意覆盖,Android要求对APP进行签名。下面介绍对APP进行签名的步骤

1、选择builder菜单下的Generate Signed APK

2、弹出签名向导对话框

3、在该对话框中选择数字证书,如果没有数字证书,可以点击Create new按钮,创建数字证书如下图所示:

4、输入证书的存储路径及文件名称,密码,有效年份,发布人员的姓名,单位,所在城市,省份,国家等信息,后点击OK按钮,如下图所示,系统会自动带入密码

5、点击Next选择签名后的安装包存放路径,构建类型,点击finish完成安装包的构建

注意:

v2是Android 7.0中引入了签名版本,v1是jar Signature来自JDK,只勾选v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式,只勾选V2签名7.0以下会直接安装完显示未安装,7.0以上则使用了V2的方式验证,为了保证兼容性,可以同时勾选V1和V2。
在Debug调试版本中,默认会调用调试用的签名证书debug.keystore,该证书默认存放在C:\Users<你的用户名>.android下。
包名和签名都相同的APP才可以覆盖安装

❸ Android_签名

keytool工具是java JDK自带的证书工具
-genkey参数表示:要生成一个证书(版权、身份识别的安全证书)
-alias参数表示:证书有别名,-alias test 表示证书别名为test
-keyalg RSA表示加密类型,RSA表示需要加密,以防止别人盗取
-validity 2000表示有效时间2000天
-keystore test表示要生成的证书名称为test
生成的数字证书test里面包换了非对称加密的私钥、公钥和证书。

填写如下相关信息->finish

jarsigner是Java的签名工具
-verbose参数表示:显示出签名详细信息
-keystore表示使用当前目录中的android123.keystore签名证书文件。
-signedjar game_signed.apk表示签名后生成的APK名称,game.apk表示未签名的APK Android软件, android.keystore表示别名

签名后的apk最好做一次4自己对齐操作

签名后解开apk文件里面会多了META-INT文件夹

里面包含了所有apk中资源分别求Hash值

首先对MANIFEST.MF整个文件求Hash值存放在SHA1-Digest-Manifest中,然后再对MANIFEST.MF里面的Hash值再求Hash值。

CERT.RSA保存加密后的信息,非对称加密的公钥,发行者名称和主体名称,生效日期和终止日期等

❹ 谈一谈Android的签名机制

首先,签名是防止apk信息被修改的一个机制,打包时把apk的信息与证书做处理,生成加密信息,安装时发现问题则拒绝安装
v1签名将apk的其他文件与证书做处理,信息保存到META-INF文件夹里,这么做的主要问题是直接修改apk包体是没法检测出来的,并由此导致了如Janus(CVE-2017-13156)这样的极严重的漏洞(ART支持直接运行dex文件,通过dex头部的魔数进行判断,而应用安装过程中是通过zip尾部的魔数判断是否是有效的zip文件,所以只要构造出一个既是dex又是zip的文件就能绕过签名验证修改里面的dex文件)
v2签名则直接用apk文件,处理之后写入进去,这样修改包体也会被系统检测出从而被拒绝安装.

v1签名:将apk中文件加密保存到META-INF目录中,不包含META-INF目中的文件。生成MANIFEST.MF、CERT.SF、CERT.RSA文件
MANIFEST.MF :保存各文件的SHA-1通过BASE64加密后的值
CERT.SF:保存MANIFEST.MF文件的SHA-1通过Base64加密后的值 和MANIFEST.MF中各项的值再次SHA-1并Base64加密保存
CERT.RSA:保存公钥和发布机构信息

v2签名:对apk整个文件进行分块摘要加密,并把加密信息存在zip中央目录前 放在apk sign block区

Android 7.0中引入了APK Signature Scheme v2,v1是jar Signature来自JDK。
V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。

V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。

v1和v2的签名使用
1)只勾选v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式
2)只勾选V2签名7.0以下会直接安装完显示未安装,7.0以上则使用了V2的方式验证
3)同时勾选V1和V2则所有机型都没问题

❺ Android系统签名

有时候,我们开发的apk需要用到系统权限,需要在AndroidManifest.xml中添加共享系统进程属性:

这时候apk的签名就需要是系统签名(platform、shared或media)才能正常使用。
常用系统签名方式

这种方式比较麻烦,你需要有编译过的源码环境,并按如下步骤:
1、拷贝App源码到Android源码的packages/apps/目录下,且App源码是普通(Eclipse)格式的
2、配置Android.mk,在其中添加

3、使用mm编译App,生成的apk即系统签名

这种方式比在源码环境下签名简单,App可以在Eclipse或Android Studio下编译,然后给apk重新签名即可。
但这种方式在频繁调试的时候比较痛苦,即使写成脚本,也需要重复一样的操作。
相关文件
platform.x509.pem、platform.pk8、signapk.jar

文件位置
platform.x509.pem、platform.pk8:

signapk.jar:

signapk源码路径:

签名命令

步骤

1、将相关文件及源apk文件置于同一路径下
2、检查源apk包,去掉META-INF/CERT.SF 和 META-INF/CERT.RSA 文件
3、执行签名命令即可

让Android Studio集成系统签名,需要用到一个工具 keytool-importkeypair ,详见下文。

这个工具的作用是将系统签名的相关信息导入到已有的签名文件里。

工具的使用方法可以通过–help或README.textile来寻求帮助

platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh

我的做法是在App根目录新建Signature文件夹专门存放签名相关文件。
步骤

1、生成demo.jks签名文件

2、编写签名脚本signature.sh,内容如下:

为脚本文件添加可执行权限:

执行脚本:

3、配置builde.gradle

在android区域下(与defaultConfig同级)添加配置:

这样debug或release apk就带有系统签名了。

如果想直接Run app就是release版且带系统签名的apk,还需修改:

这样直接Run app就是带系统签名的release版apk了。

❻ android 系统签名

也有提到怎么单独给一个apk签名,这里补充一下android的签名权限控制机制。

android的标准签名key有:

     testkey

     media

    latform

    hared

    以上的四种,可以在源码的/build/target/proct/security里面看到对应的密钥,其中shared.pk8代表私钥,shared.x509.pem公钥,一定是成对出现的。

    其中testkey是作为android编译的时候默认的签名key,如果系统中的apk的android.mk中没有设置LOCAL_CERTIFICATE的值,就默认使用testkey。

   而如果设置成:

   LOCAL_CERTIFICATE := platform

    就代表使用platform来签名,这样的话这个apk就拥有了和system相同的签名,因为系统级别的签名也是使用的platform来签名,此时使用android:sharedUserId="android.uid.system"才有用!

     在/build/target/proct/security目录下有个README,里面有说怎么制作这些key以及使用问题(android4.2):

     从上面可以看出来在源码下的/development/tools目录下有个make_key的脚本,通过传入两个参数就可以生成一对签名用的key。

    其中第一个为key的名字,一般都默认成android本身有的,因为很多地方都默认使用了这些名字,我们自定义的话只需要对第二个参数动手脚,定义如下:

    C ---> Country Name (2 letter code) ST ---> State or Province Name (full name) L ---> Locality Name (eg, city) O ---> Organization Name (eg, company) OU ---> Organizational Unit Name (eg, section) CN ---> Common Name (eg, your name or your server’s hostname) emailAddress ---> Contact email addre

    另外在使用上面的make_key脚本生成key的过程中会提示输入password,我的处理是不输入,直接enter,不要密码!后面解释,用自定义的key替换/security下面的。

    可以看到android源码里面的key使用的第二个参数就是上面README里面的,是公开的,所以要release版本的系统的话,肯定要有自己的签名key才能起到一个安全控制作用。

    在上面提到如果apk中的编译选项LOCAL_CERTIFICATE没有设置的话,就会使用默认的testkey作为签名key,我们可以修改成自己想要的key,按照上面的步骤制作一个releasekey,修改android配置在/build/core/config.mk中定义变量:

在主makefile文件里面:

ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/proct/security/releasekey)

  BUILD_VERSION_TAGS += release-key

这样的话默认的所有签名将会使用releasekey。

修改完之后就要编译了,如果上面的这些key在制作的时候输入了password就会出现如下错误:

我在网上找到了合理的解释:

其实会出现这个错误的最根本的原因是多线程的问题。在编译的时候为了加速一般都会执行make -jxxx,这样本来需要手动输入密码的时候,由于其它线程的运行,就会导致影响当前的输入终端,所以就会导致密码无法输入的情况!

再编译完成之后也可以在build.prop中查看到变量:

这样处理了之后编译出来的都是签名过的了,系统才算是release版本

我发现我这样处理之后,整个系统的算是全部按照我的要求签名了。

网上看到还有另外的签名release办法,但是应该是针对另外的版本的,借用学习一下:

make -j4 PRODUCT-proct_mol-user dist

这个怎么跟平时的编译不一样,后面多了两个参数PRODUCT-proct_mol-user 和 dist. 编译完成之后回在源码/out/dist/目录内生成个proct_mol-target_files开头的zip文件.这就是我们需要进行签名的文件系统.

我的proct_mol 是full_gotechcn,后面加“-user”代表的是最终用户版本,关于这个命名以及proct_mol等可参考http://blog.csdn.net/jscese/article/details/23931159

编译出需要签名的zip压缩包之后,就是利用/security下面的准备的key进行签名了:

./build/tools/releasetools/sign_target_files_apks -d /build/target/proct/security  out/dist/full_gotechcn-target_files.zip   out/dist/signed_target_files.zi

签名目标文件 输出成signed_target_files.zi

如果出现某些apk出错,可以通过在full_gotechcn-target_files.zip前面加参数"-e =" 来过滤这些apk.

然后再通过image的脚本生成imag的zip文件,这种方式不适用与我目前的工程源码,没有做过多验证!

Android签名机制可划分为两部分:(1)ROM签名机制;(2)第三方APK签名机制。

Android APK实际上是一个jar包,而jar包又是一个zip包。APK包的签名实际上使用的是jar包的签名机制:在zip中添加一个META的子目录,其中存放签名信息;而签名方法是为zip包中的每个文件计算其HASH值,得到签名文件(*.sf),然后对签名文件(.sf)进行签名并把签名保存在签名块文件(*.dsa)中。

在编译Android源码生成ROM的过程中,会使用build/target/proct/security目录中的4个key(media, platform, shared, testkey)来对apk进行签名。其中,*.pk8是二进制形式(DER)的私钥,*.x509.pem是对应的X509公钥证书(BASE64编码)。build/target/proct/security目录中的这几个默认key是没有密码保护的,只能用于debug版本的ROM。

要生成Release版本的ROM,可先生成TargetFiles,再使用带密码的key对TargetFiles重新签名,最后由重签名的TargetFiles来生成最终的ROM。

可以使用Android源码树中自带的工具“development/tools/make_key”来生成带密码的RSA公私钥对(实际上是通过openssl来生成的): $ development/tools/make_key media ‘/C=CN/ST=Sichuan/L=Cheng/O=MyOrg/OU=MyDepartment/CN=MyName’ 上面的命令将生成一个二进制形式(DER)的私钥文件“media.pk8”和一个对应的X509公钥证书文件“media.x509.pem”。其中,/C表示“Country Code”,/ST表示“State or Province”,/L表示“City or Locality”,/O表示“Organization”,/OU表示“Organizational Unit”,/CN表示“Name”。前面的命令生成的RSA公钥的e值为3,可以修改development/tools/make_key脚本来使用F4 (0×10001)作为e值(openssl genrsa的-3参数改为-f4)。

也可以使用JDK中的keytool来生成公私钥对,第三方APK签名一般都是通过keytool来生成公私钥对的。

可以使用openssl x509命令来查看公钥证书的详细信息: $ openssl x509 -in media.x509.pem -text -noout or, $ openssl x509 -in media.x509.pem -inform PEM -text -noout

还可以使用JDK中的keytool来查看公钥证书内容,但其输出内容没有openssl x509全面: $ keytool -printcert -v -file media.x509.pem

有了key之后,可以使用工具“build/tools/releasetools/sign_target_files”来对TargetFiles重新签名: $ build/tools/releasetools/sign_target_files_apks -d new_keys_dir -o target_files.zip target_files_resigned.zip 其中,new_keys_dir目录中需要有四个key(media, platform, shared, releasekey)。注意:这里的releasekey将代替默认的testkey(请参考build/tools/releasetools/sign_target_files脚本实现),也就是说,如果某个apk的Android.mk文件中的LOCAL_CERTIFICATE为testkey,那么在生成TargetFiles时是使用的build/target/proct/security/testkey来签名的,这里重新签名时将使用new_keys_dir/releasekey来签名。

uild/tools/releasetools/sign_target_files_apks是通过host/linux-x86/framework/signapk.jar来完成签名的。也可以直接使用host/linux-x86/framework/signapk.jar来对某个apk进行签名: $ java -jar signapk [-w] publickey.x509[.pem] privatekey.pk8 input.jar output.jar 其中,”-w”表示还对整个apk包(zip包)进行签名,并把签名放在zip包的comment中。

对于第三方应用开发者而言,对APK签名相对要简单得多。第三方应用开发一般采用JDK中的keytool和jarsigner来完成签名密钥的管理和APK的签名。

使用keytool来生成存储有公私钥对的keystore: $ keytool -genkey -v -keystore my-release-key.keystore -alias mykey -keyalg RSA -keysize 2048 -validity 10000

查看生成的密钥信息: $ keytool -list -keystore my-release-key.keystore -alias mykey -v or, $ keytool -list -keystore my-release-key.keystore -alias mykey -rfc (注:获取Base64格式的公钥证书,RFC 1421)

导出公钥证书: $ keytool -export -keystore mystore -alias mykey -file my.der (注:二进制格式公钥证书,DER) $ keytool -export -keystore mystore -alias mykey -file my.pem -rfc (注:Base64格式公钥证书,PEM)

对APK进行签名: $ jarsigner -verbose -keystore my-release-key.keystore my_application.apk mykey

验证签名: $ jarsigner -verify -verbose -certs my_application.apk

在进行Android二次开发时,有时需要把build/target/proct/security下面的公私钥对转换为keystore的形式,可以参考这篇文章:把Android源码中的密码对转换为keystore的方法。

❼ apk签名是什么意思

apk签名相当于程序的身份识别代码。

是Android application package英文缩写。

它是为了确保消息来源的真实性,同时确保消息不会被第三方篡改。于是就产生了apk签名。

在apk中写入一个“指纹”。指纹写入以后,Apk中有任何修改,都会导致这个指纹无效,Android系统在安装Apk进行签名校验时就会不通过,从而保证了安全性。

(7)什么是android签名扩展阅读:

作用

1、apk签名用于程序编译打包之后,手机在运行程序之前会先去验证程序的签名(可以看作类似于我们电脑上常说的md5)是否合法,只有通过了验证的文件才会被运行,所以签名软件的作用的让文件通过手机的验证为合法,不同的手机、系统是对应不同的签名的。

2、可以用签名工具来更改。比如手机签名工具ZipSigner 2,可以对手机上的文件进行直接签名,支持apk、zip及jar格式,方便刷机或汉化的朋友。有些爱好修改安卓apk软件的用户有时候需要对apk文件进行修改。

但是如果在电脑上操作的话,打包签名是十分复杂的,还必须安装java环境,可以说打包一个包是十分麻烦的,这款签名工具可以解决上述遇到的问题。

3、应用程序模块化:Android 系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块。

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:640
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:368
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:85
php微信接口教程 发布:2025-04-16 17:07:30 浏览:310
android实现阴影 发布:2025-04-16 16:50:08 浏览:793
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:345
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:213
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:813
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:367
土压缩的本质 发布:2025-04-16 16:13:21 浏览:593