zoukankan      html  css  js  c++  java
  • 填充无效,无法被移除(Padding is invalid and cannot be removed)

    通常, 我们在用.NET System.Security.Cryptography命名空间下面的DES/RijndaelManaged之类的加密解密时, 会发现加密很正常, 很顺利, 但解密的时候却出错说"填充无效, 无法被移除", 这是为什么呢?

    我们先看看一般的加密解密的写法 (以RijndaelManaged为例)

    Encrypt

    一般来说, 我们会把加密后的字符串转换成Base64String, 以其得到一个较为正常的加密字符串, 而问题就出现在这里, 转成Base64String之后的字符串如果用一般的Encoding来转换Byte数组的话, 会发生类似不兼容的情形出现(具体原因不太清楚, 似乎Base64String会用3字节来转换, 可能是这个原因导致其他的Encoding转换失败), 所以, Base64的加密字符串再转换成Base64的Byte数组, 那么, 问题就迎刃而解了, 如下面的Code

    Decrypt
  • 相关阅读:
    PreferenceScreen 偏好显示类 的使用
    Android实战技巧:如何在ScrollView中嵌套ListView
    android onActivityResult不执行问题
    java zip解压中文乱码问题
    RandomAccessFile读取大文件时效率很低,现进行改进---BufferedRandomAccessFile
    HTTP RANGE(多线程下载相关)
    Android实现ListView异步加载图片
    自己调用webservice方法总结(带请求头SoapHeader)
    Android将程序崩溃信息保存本地文件
    Android的intent之间复杂参数的传递
  • 原文地址:https://www.cnblogs.com/LeoWong/p/1507115.html
Copyright © 2011-2022 走看看