背景
對接支付通道過程中,使用RSA秘鑰對參數進行加密時,經常會遇到類似"Last encoded character (before the paddings if any) is a valid base 64 alpha"的錯誤,本篇文章主要記錄該問題的解決方案
分析
主要原因是因為改Base64字符串不是一串有效的Base64字符串
問題來了,如何驗證改字符串是有效的Base64字符串?
Base64.decodeBase64(Base64之后的字符串).getBytes()
例如下面這一串錯誤的Base64編碼后的字符串,通過Base64解碼后提示:
Last encoded character (before the paddings if any) is a valid base 64 alpha
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDqZ6cUhi0E4jygfWIYrFbysWH7Dzhha+zAqNmZ159pbdP1FzQ49qokEEa7YN2bhaurDBEy8dAt2AaocrzEeZY07miJM49Dzu3+Fnawhpl2RNbHPM837THJsGlsntgNdqcSAvrzaAJFocpgnnM8dAXlbTGFvZxWBQgTPtxx3yVgkkZxzcVEnvkydAXCMEQlMY00WQynmVHc3MoNvJmtXUPL5tG+LatCUBF1SY1zWTLN2ZzlV+tm6P1InioEeVaMyZys4YjlCYCJ7q9uZqjtvUzvwiClhAtY7ZKqTOQMbKXAuWqPtXvV8gWD9lvpnF5sJuHnoSjgnX6HWdTnQD7DAgMBAAECggEAFMjlm33s3GutXqQ9AzRf9fYyY7DCeYlnzCUyWnVpjZsHeVbwaOf8ia1w5+fi3FyjIIizvfMkZk20h0+4QUGdsGzus3iTx1e2wSXALHq3FtT29z79ixy71aCv1ya9GsIjHWaSjEjfybywvKpFabh8TFestVIoPoOypmeDEe9I2+vITmXaPl7I6GTF2Si9Mav4XfSSRammA+FviFmEFvIcp2aMa0u208+JuL3ghwPqHXVEMezxFPW++N1pXqjHoPsuoK+kKqBKYJcfLbxDRCgT9VzNbsFBZJD+sG55JWEsWJ12zkklQjlebqc0vX8kYVBWqeWCRcgeGbAX+YQKBgQDyVmsVkhBwGV79fa2M3PRsOzW79HzwhY69R6vF+YNZtQWFsgCWd71zvHdBhLfsMM+l7z8bTL8VPECkIDuRf3zlOA5yH5LLdDLwa2nKfg7ZVEy3tGht0+Wnh+xBn7CUk5g6u96UywcgzZ8k8swx2WqpWJWE1nQ6q8KUGdBTYQKBgQDOsY+6vVUN+YZFtUZ5JzE1fQJUkZsUjqn80cAxlbRaZfE+CAAmJ+nNY9oteFSaOrkQHEOiOkTaNB3bAZ4xz4JKJMho6UMYNUVKq8MhhZ1mAwJ39faNIxv3tjJZ9suRXprwCs9GToj+8hW9UETeGqqBNFRnzhQsVHlEi4JxxQoowKBgDsE8vWA6kHy2+Ct7lz3cPibx0Kdi5t7JGDde8iW4G9ZIMP0bmesLZHeAaecHkt8ptJNU7zDnA2jS4xOGpoVjmcOWzTklbCSxFs3Y8IrqvMrzCZfkmrRVeiKKdBgjeFRcMZoxSC1rWUMLs7eMvN2g817TUrHtcIR6xWUoAxPTxhAoGBALTIFwdk3AS6D1ffAoGq5t56tVQUeoiTc1h+eNSltLYwXb08sCyvUk5jnIuSqKSw4faWUg2NW3Viig5ort2wOqvw2hzwkM+WoEF8U9J5FD8KONmFlxzA7ZBOmmGXe1ttXKTBP6OlwysNu0NbhYyrENgeGJqEYXQqc4+gxAWnSxlzAoGAJHBeswemA3pFRYiYCklvHsUxQvVvio6KK7Z0StxSZoaSC2z9XQWKzKacMjY0cporRh7JavdlUS1fht8JSznFA3Q55sGRzOZ2xQUuW5L1IXcbqkP1wbgl2bd2onDpd36Wq5hjpZYhwVWHwyi5WU+pvBysR43qC1YS6ubUReiz4U=
支付參數提示加密失敗異常可能的原因如下:
1.原本的秘鑰錯誤(這個可以找對接人員重新獲取)
2.原本的秘鑰格式錯誤(這個可以找對接人員重新獲取,或者使用其他PKCS1格式的秘鑰生成PKCS8的格式的秘鑰重新進行加密)
