DES3

aW1wb3J0IGphdmF4LmNyeXB0by5DaXBoZXI7CmltcG9ydCBqYXZheC5jcnlwdG8uU2VjcmV0S2V5OwppbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuU2VjcmV0S2V5U3BlYzsKaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRPdXRwdXRTdHJlYW07CmltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOwppbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CmltcG9ydCBqYXZhLmlvLkZpbGU7CmltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOwppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7CgpwdWJsaWMgY2xhc3MgREVTMyB7CgogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFsZ29yaXRobSA9ICJERVNlZGUiOyAvLyDlrprkuYkg5Yqg5a+G566X5rOVLOWPr+eUqAoKICAgIC8vIERFUyxERVNlZGUsQmxvd2Zpc2gKICAgIC8vIGtleWJ5dGXkuLrliqDlr4blr4bpkqXvvIzplb/luqbkuLoyNOWtl+iKggogICAgLy8gc3Jj5Li66KKr5Yqg5a+G55qE5pWw5o2u57yT5Yay5Yy677yI5rqQ77yJCiAgICBwdWJsaWMgc3RhdGljIGJ5dGVbXSBlbmNyeXB0TW9kZShieXRlW10ga2V5Ynl0ZSwgYnl0ZVtdIHNyYykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8vIOeUn+aIkOWvhumSpQogICAgICAgICAgICBTZWNyZXRLZXkgZGVza2V5ID0gbmV3IFNlY3JldEtleVNwZWMoa2V5Ynl0ZSwgQWxnb3JpdGhtKTsKICAgICAgICAgICAgLy8g5Yqg5a+GCiAgICAgICAgICAgIENpcGhlciBjMSA9IENpcGhlci5nZXRJbnN0YW5jZShBbGdvcml0aG0pOwogICAgICAgICAgICBjMS5pbml0KENpcGhlci5FTkNSWVBUX01PREUsIGRlc2tleSk7CiAgICAgICAgICAgIHJldHVybiBjMS5kb0ZpbmFsKHNyYyk7CiAgICAgICAgfSBjYXRjaCAoamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gZTEpIHsKICAgICAgICAgICAgZTEucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgfSBjYXRjaCAoamF2YXguY3J5cHRvLk5vU3VjaFBhZGRpbmdFeGNlcHRpb24gZTIpIHsKICAgICAgICAgICAgZTIucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgfSBjYXRjaCAoamF2YS5sYW5nLkV4Y2VwdGlvbiBlMykgewogICAgICAgICAgICBlMy5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLy8ga2V5Ynl0ZeS4uuWKoOWvhuWvhumSpe+8jOmVv+W6puS4ujI05a2X6IqCCiAgICAvLyBzcmPkuLrliqDlr4blkI7nmoTnvJPlhrLljLoKICAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdIGRlY3J5cHRNb2RlKGJ5dGVbXSBrZXlieXRlLCBieXRlW10gc3JjKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8g55Sf5oiQ5a+G6ZKlCiAgICAgICAgICAgIFNlY3JldEtleSBkZXNrZXkgPSBuZXcgU2VjcmV0S2V5U3BlYyhrZXlieXRlLCBBbGdvcml0aG0pOwogICAgICAgICAgICAvLyDop6Plr4YKICAgICAgICAgICAgQ2lwaGVyIGMxID0gQ2lwaGVyLmdldEluc3RhbmNlKEFsZ29yaXRobSk7CiAgICAgICAgICAgIGMxLmluaXQoQ2lwaGVyLkRFQ1JZUFRfTU9ERSwgZGVza2V5KTsKICAgICAgICAgICAgcmV0dXJuIGMxLmRvRmluYWwoc3JjKTsKICAgICAgICB9IGNhdGNoIChqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBlMSkgewogICAgICAgICAgICBlMS5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICB9IGNhdGNoIChqYXZheC5jcnlwdG8uTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiBlMikgewogICAgICAgICAgICBlMi5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICB9IGNhdGNoIChqYXZhLmxhbmcuRXhjZXB0aW9uIGUzKSB7CiAgICAgICAgICAgIGUzLnByaW50U3RhY2tUcmFjZSgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvLyDovazmjaLmiJDljYHlha3ov5vliLblrZfnrKbkuLIKICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGJ5dGUyaGV4KGJ5dGVbXSBiKSB7CiAgICAgICAgU3RyaW5nIGhzID0gIiI7CiAgICAgICAgU3RyaW5nIHN0bXAgPSAiIjsKICAgICAgICBmb3IgKGludCBuID0gMDsgbiA8IGIubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgc3RtcCA9IChqYXZhLmxhbmcuSW50ZWdlci50b0hleFN0cmluZyhiW25dICYgMFhGRikpOwogICAgICAgICAgICBpZiAoc3RtcC5sZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICBocyA9IGhzICsgIjAiICsgc3RtcDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGhzID0gaHMgKyBzdG1wOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChuIDwgYi5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgICAgICBocyA9IGhzICsgIjoiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBocy50b1VwcGVyQ2FzZSgpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIHZvaWQgcmVhZFR4dCgpIHsKICAgICAgICB0cnkgeyAvLyDpmLLmraLmlofku7blu7rnq4vmiJbor7vlj5blpLHotKXvvIznlKhjYXRjaOaNleaNiemUmeivr+W5tuaJk+WNsO+8jOS5n+WPr+S7pXRocm93CiAgICAgICAgICAgIC8qIOivu+WFpVRYVOaWh+S7tiAqLwogICAgICAgICAgICBTdHJpbmcgcGF0aG5hbWUgPSAiRDpcXEpEMjAxNzA5MjkwMS50YXIuZ3oiOyAvLyDnu53lr7not6/lvoTmiJbnm7jlr7not6/lvoTpg73lj6/ku6XvvIzov5nph4zmmK/nu53lr7not6/lvoTvvIzlhpnlhaXmlofku7bml7bmvJTnpLrnm7jlr7not6/lvoQKICAgICAgICAgICAgRmlsZSBmaWxlbmFtZSA9IG5ldyBGaWxlKHBhdGhuYW1lKTsgLy8g6KaB6K+75Y+W5Lul5LiK6Lev5b6E55qEaW5wdXTjgIJ0eHTmlofku7YKICAgICAgICAgICAgSW5wdXRTdHJlYW1SZWFkZXIgcmVhZGVyID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKAogICAgICAgICAgICAgICAgICAgIG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZW5hbWUpKTsgLy8g5bu656uL5LiA5Liq6L6T5YWl5rWB5a+56LGhcmVhZGVyCiAgICAgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKHJlYWRlcik7IC8vIOW7uueri+S4gOS4quWvueixoe+8jOWug+aKiuaWh+S7tuWGheWuuei9rOaIkOiuoeeul+acuuiDveivu+aHgueahOivreiogAoKICAgICAgICAgICAgU3RyaW5nIGxpbmUgPSBici5yZWFkTGluZSgpOwogICAgICAgICAgICB3aGlsZSAobGluZSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBsaW5lID0gYnIucmVhZExpbmUoKTsgLy8g5LiA5qyh6K+75YWl5LiA6KGM5pWw5o2uCiAgICAgICAgICAgICAgICBpZiAobGluZS5jb250YWlucygiYy5qLmoudy5nLnMudy5UZW1wbGF0ZVNlcnZpY2UgOiDlj5HpgIHmiJDlip8iKSkgewogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihsaW5lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgfQogICAgfQogICAgLyoqCiAgICAgKiDojrflvpfmjIflrprmlofku7bnmoRieXRl5pWw57uECiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGJ5dGVbXSBnZXRCeXRlcyhTdHJpbmcgZmlsZVBhdGgpewogICAgICAgIGJ5dGVbXSBidWZmZXIgPSBudWxsOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZSk7CiAgICAgICAgICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBib3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKDEwMDApOwogICAgICAgICAgICBieXRlW10gYiA9IG5ldyBieXRlWzEwMDBdOwogICAgICAgICAgICBpbnQgbjsKICAgICAgICAgICAgd2hpbGUgKChuID0gZmlzLnJlYWQoYikpICE9IC0xKSB7CiAgICAgICAgICAgICAgICBib3Mud3JpdGUoYiwgMCwgbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZmlzLmNsb3NlKCk7CiAgICAgICAgICAgIGJvcy5jbG9zZSgpOwogICAgICAgICAgICBidWZmZXIgPSBib3MudG9CeXRlQXJyYXkoKTsKICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgewogICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwogICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAgIH0KCiAgICAvKioKICAgICAqIOagueaNrmJ5dGXmlbDnu4TvvIznlJ/miJDmlofku7YKICAgICAqLwogICAgcHVibGljIHN0YXRpYyAgdm9pZCBnZXRGaWxlKGJ5dGVbXSBiZmlsZSwgU3RyaW5nIGZpbGVQYXRoLFN0cmluZyBmaWxlTmFtZSkgewogICAgICAgIEJ1ZmZlcmVkT3V0cHV0U3RyZWFtIGJvcyA9IG51bGw7CiAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3MgPSBudWxsOwogICAgICAgIEZpbGUgZmlsZSA9IG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgRmlsZSBkaXIgPSBuZXcgRmlsZShmaWxlUGF0aCk7CiAgICAgICAgICAgIGlmKCFkaXIuZXhpc3RzKCkmJmRpci5pc0RpcmVjdG9yeSgpKXsvL+WIpOaWreaWh+S7tuebruW9leaYr+WQpuWtmOWcqAogICAgICAgICAgICAgICAgZGlyLm1rZGlycygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZpbGUgPSBuZXcgRmlsZShmaWxlUGF0aCsiXFwiK2ZpbGVOYW1lKTsKICAgICAgICAgICAgZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZSk7CiAgICAgICAgICAgIGJvcyA9IG5ldyBCdWZmZXJlZE91dHB1dFN0cmVhbShmb3MpOwogICAgICAgICAgICBib3Mud3JpdGUoYmZpbGUpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgaWYgKGJvcyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGJvcy5jbG9zZSgpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZTEpIHsKICAgICAgICAgICAgICAgICAgICBlMS5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZm9zICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgZm9zLmNsb3NlKCk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlMSkgewogICAgICAgICAgICAgICAgICAgIGUxLnByaW50U3RhY2tUcmFjZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoKICAgICAgICAvKi8vIOa3u+WKoOaWsOWuieWFqOeul+azlSzlpoLmnpznlKhKQ0XlsLHopoHmiorlroPmt7vliqDov5vljrsKICAgICAgICBTZWN1cml0eS5hZGRQcm92aWRlcihuZXcgY29tLnN1bi5jcnlwdG8ucHJvdmlkZXIuU3VuSkNFKCkpOwogICAgICAgIGZpbmFsIGJ5dGVbXSBrZXlCeXRlcyA9IHsweDExLCAweDIyLCAweDRGLCAweDU4LCAoYnl0ZSkgMHg4OCwgMHgxMCwKICAgICAgICAgICAgICAgIDB4NDAsIDB4MzgsIDB4MjgsIDB4MjUsIDB4NzksIDB4NTEsIChieXRlKSAweENCLCAoYnl0ZSkgMHhERCwKICAgICAgICAgICAgICAgIDB4NTUsIDB4NjYsIDB4NzcsIDB4MjksIDB4NzQsIChieXRlKSAweDk4LCAweDMwLCAweDQwLCAweDM2LAogICAgICAgICAgICAgICAgKGJ5dGUpIDB4RTJ9OyAvLyAyNOWtl+iKgueahOWvhumSpQoKICAgICAgICBTdHJpbmcgc3pTcmMgPSAiVGhpcyBpcyBhIDNERVMgdGVzdC4g5rWL6K+VIjsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIuWKoOWvhuWJjeeahOWtl+espuS4sjoiICsgc3pTcmMpOwoKICAgICAgICBieXRlW10gZW5jb2RlZCA9IGVuY3J5cHRNb2RlKGtleUJ5dGVzLCBzelNyYy5nZXRCeXRlcygpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIuWKoOWvhuWQjueahOWtl+espuS4sjoiICsgbmV3IFN0cmluZyhlbmNvZGVkKSk7CgogICAgICAgIGJ5dGVbXSBzcmNCeXRlcyA9IGRlY3J5cHRNb2RlKGtleUJ5dGVzLCBlbmNvZGVkKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIuino+WvhuWQjueahOWtl+espuS4sjoiICsgKG5ldyBTdHJpbmcoc3JjQnl0ZXMpKSk7Ki8KCiAgICAgICAgU3RyaW5nIGtrID0gImpkX3Rlc3RfYWJjZGVmZzEyMzQ1Njc4OSI7CiAgICAgICAgYnl0ZVtdIGJ5dGVzID0ga2suZ2V0Qnl0ZXMoKTsKICAgICAgICBTdHJpbmcgcGF0aG5hbWUgPSAiRDpcXEpEMjAxNzA5MjkwMS50YXIuZ3oiOwogICAgICAgIGJ5dGVbXSBieXRlczEgPSBnZXRCeXRlcyhwYXRobmFtZSk7CiAgICAgICAgYnl0ZVtdIGFzZGYgPSBkZWNyeXB0TW9kZShieXRlcywgYnl0ZXMxKTsKICAgICAgICBnZXRGaWxlKGFzZGYsImQ6XFwiLCJhc2RmLnRhci5neiIpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYXNkZmFzZGZhc2RmOiIgKyAobmV3IFN0cmluZyhhc2RmKSkpOwogICAgfQp9
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值