序文
構成センターの暗号化と構成コンテンツの復号化の紹介を書きました。この記事には問題があります。暗号化されたコンテンツに= and +などの特殊文字が含まれている場合、コマンドcurl localhost:7001/encrypt -dを使用する場合、前の記事で述べた場合、暗号化と復号化を行うと、特殊文字が失われることがわかります。
たとえば、次の状況:
$ curl localhost:7001/encrypt -d ef34+5edo = a34c76c4ddab706fbcae0848639a8e0ed9d612b003503030542c9897e084a7427 $ curl localhost:7001/decrypt -d A34C76C4DDAB706FBCAE0848639A8E0ED9D612B0035030542C98997E084A7427EF34 5EDO
暗号化と復号化の後、一部の特殊文字が失われることがわかります。以前にここで少しトリックがあったので、私はそれを書き留めて共有するために時間をかけました。私が同じ問題に遭遇した場合、それがあなたに役立つことを願っています。
問題の原因と解決策
実際、この問題の理由は、公式文書で具体的に説明されています。私はあまりにも不注意であると自分自身を責めることができます。詳細は次のとおりです。
このようにCurlでテストしている場合は、-Data-Urlencode(-Dの代わりに)を使用するか、明示的なコンテンツタイプ:テキスト/プレーンを設定して、Curlが特殊文字があるときにデータを正しくエンコードすることを確認します( '+'は特に注意が必要です)。
したがって、カールを使用する場合、正しい姿勢は次のとおりです。
$ curl localhost:7001/encrypt -H 'Content-Type:text/plain' --data-urlencode "eF34+5edo="335e618a02a0ff3dc1377321885f484fb2c19a499423ee7776755b875997b033$ curl localhost:7001/decrypt -h 'content-type:text/plain' - data-urlencode "335e618a02a0ff3dc1377321885f484fb2c19a499423ee77777775555b87599997b033" ef34+5edo =
それでは、暗号化および復号化するためのツールを書き込むときにどのようにプレイしますか?参照のためのokhttpの例は次のとおりです。
private string encrypt(string value){string url = "http:// localhost:7001/encrypt"; request request = new request.builder().url(url).post(requestbody.create(mediatype.parse( "text/plain")、value.getBytes())).build()); call call = okhttpclient.newcall(request);応答応答= call.execute(); ResponseBody ResponseBody = respons.body(); return responsebody.string();} private string decrypt(string value){string url = "http:// localhost:7001/decrypt"; request request = new request.builder().url(url).post(requestbody.create(mediatype.parse( "text/plain")、value.getBytes())).build()); call call = okhttpclient.newcall(request);応答応答= call.execute(); ResponseBody ResponseBody = respons.body(); RESONSEBODY.STRING();}を返します要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。