怎样为一个java程序加密? 谢谢

怎样为一个java程序加密? 谢谢,第1张

只给编译后的.jar文件,不给.java文件

不过要说明的是,java因为是字节码,所以没有办法防止被反编译。

最多也就是做一下代码混淆,比如把方法或变量名改成无意义的名称,或者加一些完全无用的代码进去,让恶意攻击的人难以看懂

Java基本的单向加密算法

1.BASE64 严格地说,属于编码格式,而非加密算法

2.MD5(Message Digest algorithm 5,信息摘要算法)

3.SHA(Secure Hash Algorithm,安全散列算法)

4.HMAC(Hash Message Authentication Code,散列消息鉴别码)

按 照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)

常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。

主要就是BASE64Encoder、BASE64Decoder两个类,我们只需要知道使用对应的方法即可。另,BASE加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。

MD5

MD5 -- message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都 是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文 件是否一致的。

HMAC

HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个 标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证 等。

    /** 有很多加密方法,这里掩饰利用MD5进行加密

     * @param str  待加密的字符串

     * @return  加密后的字符串

     * @throws NoSuchAlgorithmException  没有这种产生消息摘要的算法

     * @throws UnsupportedEncodingException  

     */

    public String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{

        //确定计算方法

        MessageDigest md5=MessageDigest.getInstance("MD5")

        BASE64Encoder base64en = new BASE64Encoder()

        //加密后的字符串

        String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")))

        return newstr

    }


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/703537.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存