Java 实现手机号码的RC4加密、解密
实现一个对手机号进行RC4加密,解密的udf函数。
1.RC4.java
package com.zz.udf;import java.math.BigInteger;public class RC4 {// 指定一个密钥public static String RC4_key = "7654qwe¥%&";// 解密public static String decry_RC4(String data) {if (data == null) {return null;}byte[] data_b = new BigInteger(data).toByteArray();byte[] data_decode = RC4Base(data_b, RC4_key);String res = new BigInteger(data_decode).toString();return res;}// 加密public static String encry_RC4(String data) {if (data == null) {return null;}byte[] data_b = new BigInteger(data).toByteArray();byte[] data_encode = RC4Base(data_b, RC4_key);String res = new BigInteger(data_encode).toString();return res;}private static byte[] initKey(String aKey) {byte[] b_key = aKey.getBytes();byte state[] = new byte[256];for (int i = 0; i < 256; i++) {state[i] = (byte) i;}int index1 = 0;int index2 = 0;if (b_key == null || b_key.length == 0) {return null;}for (int i = 0; i < 256; i++) {index2 = ((b_key[index1] & 0xff) + (state[i] & 0xff) + index2) & 0xff;byte tmp = state[i];state[i] = state[index2];state[index2] = tmp;index1 = (index1 + 1) % b_key.length;}return state;}private static byte[] RC4Base(byte[] input, String mKkey) {int x = 0;int y = 0;byte key[] = initKey(mKkey);int xorIndex;byte[] result = new byte[input.length];for (int i = 0; i < input.length; i++) {x = (x + 1) & 0xff;y = ((key[x] & 0xff) + y) & 0xff;byte tmp = key[x];key[x] = key[y];key[y] = tmp;xorIndex = ((key[x] & 0xff) + (key[y] & 0xff)) & 0xff;result[i] = (byte) (input[i] ^ key[xorIndex]);}return result;}public static void main(String[] args) {String phone_str = "38612345679";String enPhone = encry_RC4(phone_str);System.out.println("加密后的手机号: "+enPhone);System.out.println("加密后的手机号长度: "+enPhone.toString().length());String phone = decry_RC4(enPhone);System.out.println("解密后的手机号: "+phone);}
}
//-----加密前----------加密后---------
// 18612345670 299598236947
// 18612345671 299598236946
// 18612345672 299598236957
// 18612345673 299598236956
// 18612345674 299598236959
// 18612345675 299598236958
// 18612345676 299598236953
// 18612345677 299598236952
// 18612345678 299598236955
// 18612345679 299598236954
// 28612345679 305974356250
// 38612345679 315301180698
2.RC4EncodeUDF.java
package com.zz.udf;
import org.apache.hadoop.hive.ql.exec.UDF;public class RC4EncodeUDF extends UDF{public String evaluate(String values) {String enPhone = RC4.encry_RC4(values);return enPhone;}
}
3.RC4DecodeUDF.java
package com.zz.udf;
import org.apache.hadoop.hive.ql.exec.UDF;public class RC4DecodeUDF extends UDF{public String evaluate(String values) {String phone = RC4.decry_RC4(values);return phone;}
}
4.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>RC4UDF</artifactId><version>1.0-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF8</project.build.sourceEncoding><!--Hadoop版本更改成自己的版本-->
<!-- <hadoop.version>2.5.0-cdh5.2.0</hadoop.version>--><hadoop.version>2.6.0-cdh5.13.0</hadoop.version><hive.version>1.2.1</hive.version></properties><repositories><!--加入Hadoop原生态的maven仓库的地址--><repository><id>Apache Hadoop</id><name>Apache Hadoop</name><url>https://repo1.maven.org/maven2/</url></repository><!--加入cdh的maven仓库的地址--><repository><id>cloudera</id><name>cloudera</name><url>https://repository.cloudera.com/artifactory/cloudera-repos/</url></repository></repositories><dependencies><!--添加hadoop依赖--><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>${hadoop.version}</version></dependency><!--添加hive依赖--><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>${hive.version}</version></dependency></dependencies><!--下面是用于打包的插件,如果不用这个插件导出jar可能会出现问题--><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>1.4</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><filters><filter><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude><exclude>META-INF/*.DSA</exclude><exclude>META-INF/*.RSA</exclude></excludes></filter></filters><transformers><transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.handlers</resource></transformer><transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.neu.hive.UDF.ToUpperCaseUDF</mainClass></transformer><transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.schemas</resource></transformer></transformers></configuration></execution></executions></plugin></plugins></build></project>
Java 实现手机号码的RC4加密、解密相关推荐
- java rc4_java实现的RC4加密解密算法示例
本文实例讲述了java实现的RC4加密解密算法.分享给大家供大家参考,具体如下: 有一个项目,需要解析一个用户提供的rc4加密后的文件,特意搜索整理了一个Java 版本的RC4加解密算法. publi ...
- java实现rc4密码_java实现RC4加密解密的实例教程
这篇文章主要介绍了java实现的RC4加密解密算法,结合具体实例形式分析了java RC4加密解密算法的实现与使用技巧,需要的朋友可以参考下 本文实例讲述了java实现的RC4加密解密算法.分享给大家 ...
- [转]DES加密 java与.net可以相互加密解密两种方法
[转]原文地址:http://jumpman.javaeye.com/blog/605996 DES加密 java与.net可以相互加密解密两种方法 文章分类:Java编程 通过这个方法可以实现jav ...
- java pgp加密_基于Java Bouncy Castle的PGP加密解密示例
# re: 基于Java Bouncy Castle的PGP加密解密示例 回复 更多评论 2016-03-02 10:32 by 毛小龙 对文件进行加密 在测试类里面已经跑通了 抽取出来调用就报这 ...
- python 加密解密 rc4_python实现rc4加密解密,base64输出
这里将告诉您python实现rc4加密解密,base64输出,具体实现方法:from Crypto.Cipher import ARC4 as rc4cipher import base64 def ...
- 1、【java数据安全】数据安全之加密解密(base64、MD、SHA、DES、AES、IDEA、PBE、DH、RSA、EIGamal)、数字签名(DSA、ECDSA)和数字证书介绍、应用示例详细介绍
java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...
- RC4加密解密算法原理及实现对文件的加解密
本文简单实现了RC4算法对于文件的加解密,并已经验证成功.同时实现了对RC4算法加解密较大文件的测速 RC4加密解密算法的原理: 首先,通过我的理解,RC4算法所依赖的最根本原理是:对明文使用同一个密 ...
- RC4加密解密算法123
RC4是一种对称密码算法,它属于对称密码算法中的序列密码(streamcipher,也称为流密码),它是可变密钥长度,面向字节操作的流密码. RC4是流密码streamcipher中的一 ...
- RC4加密解密java算法
有一个项目,需要解析一个用户提供的rc4加密后的文件,特意搜索整理了一个java 版本的RC4加解密算法. public static String HloveyRC4(String aInput,S ...
最新文章
- git config命令使用
- python免费试听-小栈春季编程免费试听课 倒数6天!
- 给大家一个自己上牌的参考!
- sql添加列,删除列,修改列
- python数据模型搭建_python之路(19)django数据库模型(model)
- VHDL其他顺序语句
- 销售流程图_工作流程图网络图模板,招聘销售合同库存,完整设计拿来就用
- 《Pro ASP.NET MVC 3 Framework》学习笔记之一【MVC的历程,优点,HelloWorld】
- 千呼万唤始出来 ===Visual Studio Team System 2008 Team Suite 中文版 Out!!!
- ACdream群赛(4)总结
- return、break、continue三者的区别
- HTML5期末大作业:学校网站设计——初级中学网站(16页)HTML+CSS+JavaScript 学校网页设计作业 网页设计作业 学生个人设计成品,网页设计作业
- 最新《择善教育》C/C++黑客编程项目实战教程
- 李理:自动梯度求解——使用自动求导实现多层神经网络
- 16、TFT-LCD 1.8寸显示屏使用
- 深度学习之ISAR超分辨率成像
- android7.0后台,安卓7.0带来一键清理后台 真能使手机变快吗
- ym——Android从零开始(27)(山寨版微信-上)(新)
- python打开excel执行vba代码_“Python替代Excel Vba”系列(终):vba中调用Python
- Several anatomical structure pics 一些大脑解剖结构图
热门文章
- sync包——互斥锁
- CSS 属性 content 有什么作用? 有什么应用?(琐碎知识点整理)
- 常用的电平转换方案(74HC245、74LVC4245等)
- rejected from java.util.concurrent.ThreadPoolExe错误
- IP大混战,春节档你最看好谁?
- 白话数字签名(3)——Web程序中的数字签名 1
- Java DecimalFormat 格式化数字,取2位小数,按位取小数,按要求格式化小数 float,double,int,等类型都支持
- python爬取糗事百科超搞笑图片
- 快速打造一款新款爆品可以这么做
- python将字符串转换为数字信号的过程_如何检测一个字符串是否可以转换为数字...