You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中字符串转Base64报错:输入非有效Base64字符串如何解决?

问题根因

你错误使用了Convert.FromBase64String()方法处理普通明文密码字符串:

  • 该方法的作用仅为将符合Base64编码规则的字符串转换为对应的字节数组,无法处理任意普通字符串。
  • 字符串test刚好满足Base64编码的格式要求:长度为4的倍数,且所有字符都属于Base64合法字符集,因此凑巧没有抛出异常,但转换得到的字节数组并非你预期的"test"明文对应的字节内容,本身就是错误结果。
  • 字符串testt长度为5,不符合Base64编码长度必须为4的倍数的规则,因此直接抛出格式异常。
修复方案

如果你的需求是将用户输入的普通明文字符串转换为字节数组,应使用对应字符编码的GetBytes()方法,常用编码为UTF-8,示例代码如下:

public bool PostRegisterUser(string login, string password)
{
    // 注意:以下仅为字符串转字节数组的逻辑示例
    // 生产环境禁止直接存储明文密码对应的字节数组,请先对密码做哈希加盐处理后再存储
    var bytePassword = System.Text.Encoding.UTF8.GetBytes(password);
    return database.CreateNewUser(login, bytePassword);
}

如果你的业务逻辑确实要求前端传入Base64编码后的密码,请添加参数校验逻辑,提前判断输入字符串是否为合法Base64格式,避免运行时异常。

内容的提问来源于stack exchange,提问作者mikeyMike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:06:03