「java签名杂凑」java方法签名包括

博主:adminadmin 2022-12-31 09:15:08 865

本篇文章给大家谈谈java签名杂凑,以及java方法签名包括对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

方法签名定义 Java

方法签名由方法的名称和它的每一个形参(按从左到右的顺序)的类型和种类(值、引用或输出)组成。需注意的是,方法签名既不包含返回类型,也不包含 params 修饰符(它可用于最右边的参数)。 · 实例构造函数签名由它的每一个形参(按从左到右的顺序)的类型和种类(值、引用或输出)组成。具体说来,实例构造函数的签名不包含可为最右边的参数指定的 params 修饰符。 · 索引器签名由它的每一个形参(按从左到右的顺序)的类型组成。具体说来,索引器的签名不包含元素类型。 · 运算符签名由运算符的名称和它的每一个形参(按从左到右的顺序)的类型组成。具体说来,运算符的签名不包含结果类型。 签名是对类、结构和接口的成员实施重载的机制: · 方法重载允许类、结构或接口用同一个名称声明多个方法,条件是它们的签名在该类、结构或接口中是唯一的。 · 实例构造函数重载允许类或结构声明多个实例构造函数,条件是它们的签名在该类或结构中是唯一的。 · 索引器重载允许类、结构或接口声明多个索引器,条件是它们的签名在该类、结构或接口中是唯一的。 · 运算符重载允许类或结构用同一名称声明多个运算符,条件是它们的签名在该类或结构中是唯一的。

java语言中什么是签名

签名一般是使用公私密钥对。自己使用私钥加密,其他人可以任意获取到公钥用来解密,既然解出来了,就说明是私钥加密的。 用私钥加密的过程叫做签名。

当然实际过程没这么简单,还包括,找个合适的第三方再次签名公钥已证明公钥的安全性等。不过只要知道上面的东西基本就可以了。

java的方法签名是什么?

方法签名就由方法名+形参列表构成.所以你这个例子中是:

multiples(int n, int limit)

Java加密和数字签名

Java加密和数字签名本文主要谈一下密码学中的加密和数字签名 以及其在java中如何进行使用 对密码学有兴趣的伙伴 推荐看 Bruce Schneier的著作 Applied Crypotography 在jdk 的发行版本中安全性方面有了很大的改进 也提供了对RSA算法的直接支持 现在我们从实例入手解决问题(本文仅是作为简单介绍)

一 密码学上常用的概念 

)消息摘要

这是一种与消息认证码结合使用以确保消息完整性的技术 主要使用单向散列函数算法 可用于检验消息的完整性 和通过散列密码直接以文本形式保存等 目前广泛使用的算法有MD MD SHA jdk 对上面都提供了支持 在java中进行消息摘要很简单 java security MessageDigest提供了一个简易的操作方法

/**    *MessageDigestExample java    *Copyright     */    import java security MessageDigest;    /**    *单一的消息摘要算法 不使用密码 可以用来对明文消息(如 密码)隐藏保存    */    public class MessageDigestExample{     public static void main(String[] args) throws Exception{    if(args length!= ){     System err println( Usage:java MessageDigestExample text );     System exit( );    }

byte[] plainText=args[ ] getBytes( UTF );

//使用getInstance( 算法 )来获得消息摘要 这里使用SHA 的 位算法    MessageDigest messageDigest=MessageDigest getInstance( SHA );

System out println( \n +messageDigest getProvider() getInfo());    //开始使用算法    messageDigest update(plainText);    System out println( \nDigest: );    //输出算法运算结果    System out println(new String(messageDigest digest() UTF ));     }    }    还可以通过消息认证码来进行加密实现 javax crypto Mac提供了一个解决方案 有兴趣者可以参考相关API文档 本文只是简单介绍什么是摘要算法

这里补充另一个运用消息摘要的方式加密的例子:    public class TestEncrypt {

public TestEncrypt() {        }

/**         * @param strSrc :strSrc is a string will be encrypted          * @param encName : encName is the algorithm name will be used          *                encName dafault to MD          * @return String         */        public String Encrypt(String strSrc String encName) {

MessageDigest md = null;            String strDes = null;

byte[] bt = strSrc getBytes();            try {                if (encName == null || encName equals( )) {                    encName = MD ;                }                md = MessageDigest getInstance(encName);                md update(bt);                strDes = bytes Hex(md digest()); //to HexString            }            catch (NoSuchAlgorithmException e) {                System out println( Invalid algorithm );                return null;            }            return strDes;        }

public String bytes Hex(byte[] bts) {            String des = ;            String tmp = null;            for (int i = ; i bts length; i++) {                tmp = (Integer toHexString(bts[i] xFF));                if (tmp length() == ) {                    des += ;                }                des += tmp;            }            return des;        }

public static void main(String[]args) {            TestEncrypt te = new TestEncrypt();            String strSrc = 可以加密汉字 Oh and english ;            System out println( Source String: + strSrc);            System out println( Encrypted String: );            System out println( Use Def: + te Encrypt(strSrc null));            System out println( Use MD : + te Encrypt(strSrc MD ));            System out println( Use SHA: + te Encrypt(strSrc SHA ));            System out println( Use SHA : + te Encrypt(strSrc SHA ));        }    }

另外 在javawebparts中的 RequestHelpers里的generateGUID方法也涉及到了MD 的方法 代码如下:    public static String generateGUID(HttpServletRequest request) {

String out = ;        try {          // Construct a string that is prised of:          // Remote IP Address + Host IP Address + Date (yyyyMMdd) +          // Time (hhmmssSSa) + Requested Path + Session ID +          // HashCode Of ParameterMap          StringBuffer *** = new StringBuffer( );          *** append(request getRemoteAddr());          InetAddress ia = InetAddress getLocalHost();          *** append(ia getHostAddress());          *** append(new SimpleDateFormat( yyyyMMddhhmmssSSa ) format(new Date()));          String path = request getServletPath();          String pathInfo = request getPathInfo();          if (pathInfo != null) {            path += pathInfo;          }          *** append(path);          *** append(request getSession(false));          *** append(request getParameterMap() hashCode());          String str = *** toString();          // Now encode the string using an MD encryption algorithm           MessageDigest md = MessageDigest getInstance( md );          md update(str getBytes());          byte[] digest = md digest();          StringBuffer hexStr = new StringBuffer( );          for (int i = ; i digest length; i++) {            str = Integer toHexString( xFF digest[i]);            if (str length() ) {              str = + str;            }            hexStr append(str);          }          out = hexStr toString();        } catch (NoSuchAlgorithmException nsae) {          log error(nsae);        } catch (UnknownHostException uhe) {          log error(uhe);        }        // Return the encrypted string It should be unique based on the        // ponents that prise the plain text string and should always be        // characters thanks to the MD algorithm         return out;

} // End generateGUID()

)私钥加密

消息摘要只能检查消息的完整性 但是单向的 对明文消息并不能加密 要加密明文的消息的话 就要使用其他的算法 要确保机密性 我们需要使用私钥密码术来交换私有消息

这种最好理解 使用对称算法 比如 A用一个密钥对一个文件加密 而B读取这个文件的话 则需要和A一样的密钥 双方共享一个私钥(而在web环境下 私钥在传递时容易被侦听)

使用私钥加密的话 首先需要一个密钥 可用javax crypto KeyGenerator产生一个密钥(java security Key) 然后传递给一个加密工具(javax crypto Cipher) 该工具再使用相应的算法来进行加密 主要对称算法有 DES(实际密钥只用到 位) AES(支持三种密钥长度 位) 通常首先 位 其他的还有DESede等 jdk 种也提供了对对称算法的支持 以下例子使用AES算法来加密

/**    *PrivateExmaple java    *Copyright     */    import javax crypto Cipher;    import javax crypto KeyGenerator;    import java security Key;

/**    *私鈅加密 保证消息机密性    */    public class PrivateExample{     public static void main(String[] args) throws Exception{    if(args length!= ){     System err println( Usage:java PrivateExample text );     System exit( );    }    byte[] plainText=args[ ] getBytes( UTF );

//通过KeyGenerator形成一个key    System out println( \nStart generate AES key );    KeyGenerator keyGen=KeyGenerator getInstance( AES );    keyGen init( );    Key key=keyGen generateKey();    System out println( Finish generating DES key );

//获得一个私鈅加密类Cipher ECB是加密方式 PKCS Padding是填充方法    Cipher cipher=Cipher getInstance( AES/ECB/PKCS Padding );    System out println( \n +cipher getProvider() getInfo());

//使用私鈅加密    System out println( \nStart encryption: );    cipher init(Cipher ENCRYPT_MODE key);    byte[] cipherText=cipher doFinal(plainText);    System out println( Finish encryption: );    System out println(new String(cipherText UTF ));

System out println( \nStart decryption: );    cipher init(Cipher DECRYPT_MODE key);    byte[] newPlainText=cipher doFinal(cipherText);    System out println( Finish decryption: );

System out println(new String(newPlainText UTF ));

}    }

)公钥加密

上面提到 私钥加密需要一个共享的密钥 那么如何传递密钥呢?web环境下 直接传递的话很容易被侦听到 幸好有了公钥加密的出现 公钥加密也叫不对称加密 不对称算法使用一对密钥对 一个公钥 一个私钥 使用公钥加密的数据 只有私钥能解开(可用于加密) 同时 使用私钥加密的数据 只有公钥能解开(签名) 但是速度很慢(比私钥加密慢 到 倍) 公钥的主要算法有RSA 还包括Blowfish Diffie Helman等 jdk 种提供了对RSA的支持 是一个改进的地方

/**    *PublicExample java    *Copyright     */    import java security Key;    import javax crypto Cipher;    import java security KeyPairGenerator;    import java security KeyPair;    /**    *一个简单的公鈅加密例子 Cipher类使用KeyPairGenerator生成的公鈅和私鈅    */    public class PublicExample{     public static void main(String[] args) throws Exception{    if(args length!= ){     System err println( Usage:java PublicExample text );     System exit( );    }

byte[] plainText=args[ ] getBytes( UTF );    //构成一个RSA密钥    System out println( \nStart generating RSA key );    KeyPairGenerator keyGen=KeyPairGenerator getInstance( RSA );    keyGen initialize( );    KeyPair key=keyGen generateKeyPair();    System out println( Finish generating RSA key );

//获得一个RSA的Cipher类 使用公鈅加密    Cipher cipher=Cipher getInstance( RSA/ECB/PKCS Padding );    System out println( \n +cipher getProvider() getInfo());

System out println( \nStart encryption );    cipher init(Cipher ENCRYPT_MODE key getPublic());    byte[] cipherText=cipher doFinal(plainText);    System out println( Finish encryption: );    System out println(new String(cipherText UTF ));

lishixinzhi/Article/program/Java/hx/201311/26898

Java加密和数字签名 1消息摘要

本文主要谈一下密码学中的加密和数字签名 以及其在java中如何进行使用 对密码学有兴趣的伙伴 推荐看Bruce Schneier的著作 Applied Crypotography 在jdk 的发行版本中安全性方面有了很大的改进 也提供了对RSA算法的直接支持 现在我们从实例入手解决问题(本文仅是作为简单介绍)

一 密码学上常用的概念

)消息摘要

这是一种与消息认证码结合使用以确保消息完整性的技术 主要使用单向散列函数算法 可用于检验消息的完整性 和通过散列密码直接以文本形式保存等 目前广泛使用的算法有MD MD SHA jdk 对上面都提供了支持 在java中进行消息摘要很简单 java security MessageDigest提供了一个简易的操作方法

Java代码

/***MessageDigestExample java*Copyright */import java security MessageDigest;/***单一的消息摘要算法 不使用密码 可以用来对明文消息(如 密码)隐藏保存*/public class MessageDigestExample{ public static void main(String[] args) throws Exception{if(args length!= ){ System err println( Usage:java MessageDigestExample text ); System exit( );}byte[] plainText=args[ ] getBytes( UTF );//使用getInstance( 算法 )来获得消息摘要 这里使用SHA 的 位算法MessageDigest messageDigest=MessageDigest getInstance( SHA );System out println( +messageDigest getProvider() getInfo());//开始使用算法messageDigest update(plainText);System out println( Digest: );//输出算法运算结果System out println(new String(messageDigest digest() UTF )); }}

lishixinzhi/Article/program/Java/gj/201311/27287

关于java签名杂凑和java方法签名包括的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。