RSA1、RSA256 签名
   
   public static String MakeSign(String Data) {
   
   
   try {
   
   
   byte[] data = Data.getBytes();
   
   byte[] keyBytes = base64String2Byte(PrivateKey);
  
  
   PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
  
  
   KeyFactory keyFactory = KeyFactory.getInstance("RSA");
  
  
   PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);
  
  
   Signature signature = Signature.getInstance("SHA256withRSA");//这个根据需求填充SHA1WithRSA或SHA256WithRSA
   
   signature.initSign(priKey);
   
   signature.update(data);
  
  
   return byte2Base64String(signature.sign());
   
   } catch (Exception e) {
   
   
   return "";
   
   }
   
   }
   
   // base64字符串转字节数组
   
   2   public static byte[] base64String2Byte(String base64Str) {
   
   
   3     return Base64.decodeBase64(base64Str);
   
   4   }
   
   RSA1、RSA256 验签
   
   `public static boolean VeriSign(String Data_ori, String Singnature) {
   
   
   try {
   
   
   byte[] signed = base64String2Byte(Singnature);
  
  
   X509EncodedKeySpec keySpec = new X509EncodedKeySpec(base64String2Byte(PublicKey));
   
   KeyFactory keyFactory = null;
   
   keyFactory = KeyFactory.getInstance("RSA");
   
   PublicKey publicKey = keyFactory.generatePublic(keySpec);
  
  
   Signature signature2 = Signature.getInstance("Sha256WithRSA");//这个根据需求填充SHA1WithRSA或SHA256WithRSA
   
   signature2.initVerify(publicKey);
   
   signature2.update(Data_ori.getBytes("UTF-8"));
   
   boolean verify = signature2.verify(signed);
   
   return verify;
   
   } catch (Exception e) {
   
   
   return false;
   
   }
   
   }
   
   SHA256withECDSA验签
   
   public static boolean verifySign(String _data, String _key, String _sign) {
   
   
   try {
   
   
   java.security.spec.X509EncodedKeySpec bobPubKeySpec = new java.security.spec.X509EncodedKeySpec(
   
   new BASE64Decoder().decodeBuffer(_key));
   
   KeyFactory keyf = KeyFactory.getInstance("EC"); //ECC 可根据需求更改
   
   PublicKey publicKey = keyf.generatePublic(bobPubKeySpec);
  
  
   byte[] data = hexStringToBytes(_data);
   
   byte[] sig = hexStringToBytes(_sign);
  
  
   Signature signer = Signature.getInstance("SHA256withECDSA");
   
   signer.initVerify(publicKey);
   
   signer.update(data);
   
   return (signer.verify(sig));
   
   }
   
   catch(Exception ex)
   
   {
   
   
   System.out.println(ex.getMessage());
   
   return false;
   
   }
  
  转自:http://www.cnblogs.com/cxygg/p/9468653.html
MD5
  
   SHA1
  
  
   SHA256
  
  SHA512 这4种本质都是摘要函数,不通在于长度  MD5 是 128 位,
  
   SHA1
  
  是 160 位 ,
  
   SHA256
  
  是 256 位,SHA512 是512 位。
  
   SHA1
  
  With
  
   RSA
  
  他的 核心算法是 先用
  
   sha1
  
  去摘要,然后使用
  
   RSA
  
  加密。但是 他在 ...
  
   SHA1
  
  安全哈希算法(Secure Hash Algorithm)主要适用于数字
  
   签名
  
  标准 (Digital Signature Standard DSS)里面定义的数字
  
   签名
  
  算法(Digital Signature Algorithm DSA)
  
   RSA
  
  是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。
  
   SHA1
  
  With
  
   RSA
  
  :用SHA算...
                                    I'm generating a key pair using the secp256k1 curve. Then I'm using the private key to sign a random String:byte[] content = "random string".getBytes();Signature dsa = Signature.getInstance("
  
   SHA256
  
  wit...
  
   java
  
  MD5With
  
   RSA
  
  算法
首先我们来看
  
   Java
  
  中的 MD5with
  
   RSA
  
  
   签名
  
  
   JAVA
  
  private static final String SIGNATURE_ALGORITHM = "MD5with
  
   RSA
  
  ";
import
  
   java
  
  .security.KeyFactory;
import
  
   java
  
  .security.PrivateKey;
import
  
   java
  
  .securi...
                                    写在文章中之前:网上当前很多关于jarsigner对APK
  
   签名
  
  的讲法,但是有些讲的很粗糙,有些还在就在在抄袭他人的文章,而自己却没有去验证是否正确。
一、由于自己在工作中要用到jarsigner对apk进行最后的发布
  
   签名
  
  ,所以自己也去看了一下具体怎么搞,不足之处欢迎读者指出,在此感谢杨立先生的指导。
二、关于jarsigner的具体介绍请查阅:http://docs.oracle.com/ja
                                    一、
  
   ECDSA
  
  概述
   椭圆曲线数字
  
   签名
  
  算法(
  
   ECDSA
  
  )是使用椭圆曲线密码(ECC)对数字
  
   签名
  
  算法(DSA)的模拟。
  
   ECDSA
  
  于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。它在1998年既已为ISO所接受,并且包含它的其他一些标准亦在ISO的考虑之中。与普通的离散对数问题(discrete logarithm problem DLP)和大数分解问题(inte...
//验证
  
   签名
  
  $algo = "
  
   SHA256
  
  ";
// 304402205E4799D8E8199184FB7613000781EE5D7AE2E27121733E8B391FD33C51BD80C7022039EAF55B1C3958F39764D64EC18945E1...
  
   Java
  
  实现 ECC 非对称加密算法加解密和
  
   签名
  
  验签前言一、ECC 椭圆曲线算法简介二、ECC 加解密代码实例1.生成 ECC 密钥2.ECC 加解密3.测试代码三、ECC
  
   签名
  
  验签代码实例1. ECC
  
   签名
  
  验签2. 测试代码
文章字数比较多,可直接查看代码:源码地址,文中描述有误的地方欢迎各位大神指导。
一、ECC 椭圆曲线算法简介
ECC是椭圆曲线算法,其加密算法叫ECIES,
  
   签名
  
  算法叫
  
   ECDSA
  
  。JDK 并不支持 ECC 算法,可以引入 BouncyCastle 库使用。ECC算法相当耗费资源
  
   签名
  
  的概念
目的: 为了确认某个信息确实是由某个发送方发送的,或者某个发布内容确实是由发送方发布的,任何人都不可能伪造消息,并且,发送方也不能抵赖。
方法: 对发布的信息内容,通过某种可靠的加工(比如进行MD5运算),生成
  
   签名
  
  标识(字符串序列或者证书之类)
验证: 任何人拿到发布的信息内容后,可以通过同样的加工,得出
  
   签名
  
  标识,如果比对和发布者公布的
  
   签名
  
  一致,则验证为真。
  
   签名
  
  与加密区别: 加密是为了不让别人知道原来的信息,
  
   签名
  
  是为了保证大家获取到的原来的信息是没有经过改动的。
  
   签名
  
  算法
1、MD5