当前位置: 首页 > 知识库问答 >
问题:

AES/CBC/NOPADDING加解密[副本]

郁权
2023-03-14

我正在使用一个带有NFC的微控制器,所以我需要发送加密数据,为什么我使用AES/CBC/NOPADDING而我正在处理android应用html" target="_blank">程序,我有一个加密和解密的问题,这是我正在处理的代码

    String message="(*my_Log*y7VRMh5Wau80bRebLh/JaHMru/0Sj05E+lKUvT6d8Rw=*1604137444*19)111111111112";
    textView.setText("before encp:- "+message);
    try {
        String data=encrypt(message,"Thats my Kung Fu");
        Log.d("data after encode:-",data);
        textView.append("\n after encode:- \n"+data);
        String data2=decrypt(data,"Thats my Kung Fu");
        Log.d("data after decode:-",data2);
        textView.append("\n after decode:- \n"+data2);

    } catch (Exception e) {
        e.printStackTrace();
    }

}

@RequiresApi(api = Build.VERSION_CODES.O)
private String decrypt(String data, String key) throws Exception {
    SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");
    Cipher cipher=null;
    byte[] ivBytes = new byte[16];
    cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
    cipher.init(Cipher.DECRYPT_MODE,skey,new IvParameterSpec(ivBytes));
    byte[] decodeval=Base64.getDecoder().decode(data);
    byte[] decval= cipher.doFinal(decodeval);
    return new String(decval);

}

@RequiresApi(api = Build.VERSION_CODES.O)
private String encrypt(String message, String key) throws Exception{
    byte[] encval=null;
    SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");
    Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
    cipher.init(Cipher.ENCRYPT_MODE,skey);
    encval=cipher.doFinal(message.getBytes());
    String encryptedValue = Base64.getEncoder().encodeToString(encval);
    return encryptedValue;

}

这是我的日志:-d/data ;after ;encode:-:zjsew6h+abzfkwna/pqpdzumnfhy0kmz2lxf23tdavim1c5l5oimagwxg6nrt0udciy/xeaehketf32+5wvq420/tsljaxer7ynj5+hgfmmo1qjhrwb8tzyuzmivokug

D/data ;解码后 ;:-:5 ts U0³U%WAU80BREBLH/JAHMRU/0SJ05E+LKUVT6D8RW=160413744419)111111111112

在编码字符串大小为80之前,在编码字符串大小为128之后,并且在十年之后,该字符串大小为80之前,也未完成解码

共有1个答案

宗政霄
2023-03-14
@RequiresApi(api = Build.VERSION_CODES.O)
private String encrypt(String message, String key) throws Exception{
    byte[] encval=null;
    SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");
    Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
    byte[] ivBytes = new byte[16];
    cipher.init(Cipher.ENCRYPT_MODE,skey,new IvParameterSpec(ivBytes));   //iv here
    encval=cipher.doFinal(message.getBytes());
    String encryptedValue = Base64.getEncoder().encodeToString(encval);
    return encryptedValue;

}

您也必须提供加密的iv

 类似资料:
  • 我希望有一个用C编写的程序,可以在没有openssl这样的大型库的帮助下,用AES-CBC对字符串进行编码/解码。 目标: 使用密码短语对字符串进行编码/解码: 因此,应用程序需要接受3个输入参数。。。 输入字符串(待编码)/或已编码字符串(待解码) 用于编码/解码字符串的密码 编码或解码指示器 我对C语言不熟悉(我可以用C#编码)。 我已经找到了https://github.com/kokke/

  • 我只想用这3种模式测试openSSL中的AES:128192和256密钥长度,但我解密的文本与我的输入不同,我不知道为什么。此外,当我传递一个巨大的输入长度(比如1024字节)时,我的程序显示。。。我的意见总是一样的,但这并不重要,至少现在是这样。代码如下: 编辑: 当我将输出大小更改为而不是时,我得到了结果: 那么,是否有可能存在Outpus大小和IV大小的问题?它们应该有什么尺寸(AES-CB

  • 以下是我的加密/解密方法: 所以现在当我尝试加密时,我得到了这个异常: 我已经尝试在encrypt和Decrpt中使用密码实例。它只用于加密而不用于解密。我认为需要填充,因为数据大小不是16字节的倍数。“data”字节长度打印为,因此尝试将字符附加到数据中,然后进行加密,但也不起作用。

  • 问题内容: PHP加密功能 当我尝试使用下面的函数在Java中解密此结果时,我得到的只是“ Test @ string”,而我则是“ @@BKxnfÈ〜¯Ô’M”。有什么想法我错了吗?谢谢 问题答案: 编辑:从Java 8开始,Java现在包括可接受的Base64类。 这条线 看起来错了。而是使用apache commons编解码器类或Harder base64 类。同样,mcrypt使用的默认填

  • 我用java编写了这段代码,以便解密密文。我有钥匙。对我来说,一切都是正确的,但我有我要解释的问题。 这是我的代码: 我收到以下错误: 出了什么问题?我知道这个问题在某种程度上与衬垫有关,但我不知道确切的解决方案。我只有一个密文IV和密钥。

  • 我已经设法使它能够处理不包含og a-zA-Z0-9之外的字符和一些特殊字符的文本,但如果我使用丹麦字母,如ielouangØ,解密的文本会显示?而不是实际的字母。所有文件都保存为UTF-8,头字符集=UTF-8 Javascript - input: "tester for php: 我试过选项0,OPENSSL_ZERO_PADDING和OPENSSL_RAW_DATA,结果相同。有人能帮我吗