Java学习之路(2)之手机号加密

新知识:

substring()方法:返回一个新字符串,它是此字符串的一个子字符串。

用法:

public String substring(int beginIndex,
                        int endIndex)

该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndexbeginIndex - 起始索引(包括),endIndex - 结束索引(不包括)。

演示:

public class test {
    public static void main(String[] args) {
        //定义一个字符串
        String demo01 = "123456abc";
        //截取前三位,定义一个新的string类型字符串接收substring()返回的值
        //注意:截取之后,原字符串不会变
        String demo02 = demo01.substring(0,3);
        //输出截取的字符串
        System.out.println(demo02);
    }
}

 运行结果为:123

需求:键盘录入手机号,把手机号4-7位加密为****后输出手机号

main方法:


import java.util.Scanner;

public class CellPhoneNumber {
    public static void main(String[] args) {
        //键盘输入手机号
        Scanner sc = new Scanner(System.in);
        String number = sc.next();
        //调用shield中的方法进行加密
        shield x = new shield(number);
        //定义一个string接收返回值
        String phone = x.phone();
        //打印返回值
        System.out.println(phone);
    }
}

调用方法:

public class shield {
    private String number;

    public shield() {
    }

    public shield(String number) {
        this.number = number;
    }

    /**
     * 获取
     * @return number
     */
    public String getNumber() {
        return number;
    }

    /**
     * 设置
     * @param number
     */
    public void setNumber(String number) {
        this.number = number;
    }
    //定义两个string接收截取的两段数字
    public String phone() {
        String demo01 = number.substring(0, 3);
        String demo02 = number.substring(7);
        return demo01 + "****" + demo02;
    }
}

 此文仅为学习substring()方法!

Java中,可以使用不同的加密算法对手机号加密和解密。常见的加密算法包括对称加密算法和非对称加密算法。 对称加密算法使用相同的密钥进行加密和解密,常见的对称加密算法有DES、AES等。以下是一个使用AES算法对手机号码进行加密和解密的示例代码: ```java import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.util.Base64; public class PhoneEncryptorDecryptor { private static final String AES_ALGORITHM = "AES"; private static final String AES_KEY = "0123456789abcdef"; // 密钥,必须是16位 public static String encrypt(String phoneNumber) throws Exception { SecretKeySpec secretKeySpec = new SecretKeySpec(AES_KEY.getBytes(), AES_ALGORITHM); Cipher cipher = Cipher.getInstance(AES_ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec); byte[] encryptedBytes = cipher.doFinal(phoneNumber.getBytes()); return Base64.getEncoder().encodeToString(encryptedBytes); } public static String decrypt(String encryptedPhoneNumber) throws Exception { SecretKeySpec secretKeySpec = new SecretKeySpec(AES_KEY.getBytes(), AES_ALGORITHM); Cipher cipher = Cipher.getInstance(AES_ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); byte[] encryptedBytes = Base64.getDecoder().decode(encryptedPhoneNumber); byte[] decryptedBytes = cipher.doFinal(encryptedBytes); return new String(decryptedBytes); } } ``` 使用示例: ```java public class Main { public static void main(String[] args) { try { String phoneNumber = "13812345678"; String encryptedPhoneNumber = PhoneEncryptorDecryptor.encrypt(phoneNumber); System.out.println("加密后的手机号码:" + encryptedPhoneNumber); String decryptedPhoneNumber = PhoneEncryptorDecryptor.decrypt(encryptedPhoneNumber); System.out.println("解密后的手机号码:" + decryptedPhoneNumber); } catch (Exception e) { e.printStackTrace(); } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值