如何验证app的完整性?

如何验证app的完整性?,第1张

具体步骤如下:

1、在手机桌面上,点击设置图标进入。

2、进入设置列表菜单,点击Safari浏览器进入。

3、在Safari浏览器界面,点击下载项选项进入。

4、在下载项设置界面,勾选我的iPhone选项即可。

1,要明确java相关的环境变量有什么。它们包括:
JAVA_HOME = jdk的安装路径
path = (在原有配置的最后增加)%JAVA_HOME%\bin
作用:让系统识别java命令
CLASSPATH = ;%JAVA_HOME%\lib\dtjar;%JAVA_HOME%\lib\toolsjar;
作用:让系统能够找到class文件
2,配置完毕后,就可以使用下面的一个小程序验证java是否安装成功:
程序源代码如下(如该文件放在C:\Hellojava):
public class Hello
{
public static void main(String[] args)
{
Systemoutprintln("Hello world!");
}
}
运行中输入cmd打开dos界面,进入C:\
javac Hellojava
查看C盘下是否生成了class文件
java Hello
查看控制台是否显示“Hello world!”,如果显示,则成功。
注意:只输入java -version并不能证明环境正确设置。

工具软件:PGP Desktop

安装PGP Desktop,并建立完PGP密钥后,才能验签。

①建立需要完整性检验的文件:

点击完成

②验证文件的完整性:

经过①的 *** 作,会在①-8步所选择的路径下生成一个sig文件。在装有PGP Desktop软件、且存在签名密钥公钥的电脑上双击该文件即可。若文件完整性验证通过就会在已校验下显示一个绿色对钩。若失败则在已签名一栏为无效签名。

1)从密钥库中读取CA的证书
FileInputStream in=new FileInputStream("keystore");
KeyStore ks=KeyStoregetInstance("JKS");
ksload(in,storepasstoCharArray());
javasecuritycertCertificate c1=ksgetCertificate("caroot");
(2)从密钥库中读取CA的私钥
PrivateKey caprk=(PrivateKey)ksgetKey(alias,cakeypasstoCharArray());
(3)从CA的证书中提取签发者的信息
byte[] encod1=c1getEncoded(); 提取CA证书的编码
X509CertImpl cimp1=new X509CertImpl(encod1); 用该编码创建X509CertImpl类型对象
X509CertInfo cinfo1=(X509CertInfo)cimp1get(X509CertImplNAME+""+X509CertImplINFO); 获取X509CertInfo对象
X500Name issuer=(X500Name)cinfo1get(X509CertInfoSUBJECT+""+CertificateIssuerNameDN_NAME); 获取X509Name类型的签发者信息
(4)获取待签发的证书
CertificateFactory cf=CertificateFactorygetInstance("X509");
FileInputStream in2=new FileInputStream("usercsr");
javasecuritycertCertificate c2=cfgenerateCertificate(in);
(5)从待签发的证书中提取证书信息
byte [] encod2=c2getEncoded();
X509CertImpl cimp2=new X509CertImpl(encod2); 用该编码创建X509CertImpl类型对象
X509CertInfo cinfo2=(X509CertInfo)cimp2get(X509CertImplNAME+""+X509CertImplINFO); 获取X509CertInfo对象
(6)设置新证书有效期
Date begindate=new Date(); 获取当前时间
Date enddate=new Date(begindategetTime()+30002460601000L); 有效期为3000天
CertificateValidity cv=new CertificateValidity(begindate,enddate); 创建对象
cinfo2set(X509CertInfoVALIDITY,cv); 设置有效期
(7)设置新证书序列号
int sn=(int)(begindategetTime()/1000); 以当前时间为序列号
CertificateSerialNumber csn=new CertificateSerialNumber(sn);
cinfo2set(X509CertInfoSERIAL_NUMBER,csn);
(8)设置新证书签发者
cinfo2set(X509CertInfoISSUER+""+CertificateIssuerNameDN_NAME,issuer);应用第三步的结果
(9)设置新证书签名算法信息
AlgorithmId algorithm=new AlgorithmId(AlgorithmIdmd5WithRSAEncryption_oid);
cinfo2set(CertificateAlgorithmIdNAME+""+CertificateAlgorithmIdALGORITHM,algorithm);
(10)创建证书并使用CA的私钥对其签名
X509CertImpl newcert=new X509CertImpl(cinfo2);
newcertsign(caprk,"MD5WithRSA"); 使用CA私钥对其签名
(11)将新证书写入密钥库
kssetCertificateEntry("lf_signed",newcert);
FileOutputStream out=new FileOutputStream("newstore");
ksstore(out,"newpass"toCharArray()); 这里是写入了新的密钥库,也可以使用第七条来增加条目

可以在使用该文件前加文件锁 删除时判断是否文件被锁住
RandomAccessFile input=new RandomAccessFile("ajava","rw");
FileChannel channel=inputgetChannel();
FileLock lock=channeltryLock();
如果在windows *** 作系统下 只能通过jni调用相关dll

1、打开STEAM,点击左上角的“库”选项。

2、点击进入库后,找到GTA5游戏选项。

3、鼠标右击GTA5,选择“属性”选项。

4、在d出的窗口中选择“本地文件”选项。

5、找到“验证游戏文件的完整性”选项,点击即可。

java的,我已经测试可以使用。

但是单个文件很大的话可能算md5会比较慢

import javasecurityMessageDigest;
import javasecurityNoSuchAlgorithmException;
import javautilArrayList;
import javaioFile;
import javaioFileInputStream;
import javaioFileNotFoundException;
import javaioIOException;
import javamathBigInteger;
import javanioMappedByteBuffer;
import javaniochannelsFileChannel;
public class Main
{
ArrayList<String> md5List = new ArrayList<String>();

public String getMd5(File file){
String value = null;
FileInputStream in = null;
try {
in = new FileInputStream(file);
MappedByteBuffer byteBuffer = ingetChannel()map(FileChannelMapModeREAD_ONLY, 0, filelength());
MessageDigest md5 = MessageDigestgetInstance("MD5");
md5update(byteBuffer);
BigInteger bi = new BigInteger(1, md5digest());
value = bitoString(16);
} catch (FileNotFoundException e) {
eprintStackTrace();
} catch (NoSuchAlgorithmException e) {
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
} finally {
if(null != in) {
try {
inclose();
} catch (IOException e) {
eprintStackTrace();
}
}
}
return value;
}

public void run(File file) {
        if(file != null){  
         if(fileisDirectory()){  
         File f[] = filelistFiles();
         if(f != null) {
         for(int i = 0; i < flength; i++)  
         run(f[i]);
         }
            } else {
             String md5 = getMd5(file);
             if(md5Listcontains(md5)) {
             Systemoutprintln(filetoString());
             filedelete();
             } else {
             md5Listadd(md5);
             }
            }  
        }  
}

public static void main(String args[]) {
Main m = new Main();
String path = "D:\\test";
mrun(new File(path));
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13402634.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存