| // Licensed to the Apache Software Foundation (ASF) under one or more |
| // contributor license agreements. See the NOTICE file distributed with |
| // this work for additional information regarding copyright ownership. |
| // The ASF licenses this file to You under the Apache License, Version 2.0 |
| // (the "License"); you may not use this file except in compliance with |
| // the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package security |
| |
| import ( |
| "crypto/sha256" |
| "encoding/hex" |
| "strconv" |
| "time" |
| ) |
| |
| import ( |
| "github.com/apache/dubbo-kubernetes/pkg/bufman/constant" |
| ) |
| |
| // EncryptPlainPassword 加密明文密码 |
| func EncryptPlainPassword(userName, plainPwd string) string { |
| sha := sha256.New() |
| sha.Write([]byte(plainPwd)) |
| sha.Write([]byte(userName)) |
| bytes := sha.Sum(nil) |
| |
| return hex.EncodeToString(bytes) |
| } |
| |
| // GenerateToken 生成token |
| func GenerateToken(username, note string) string { |
| sha := sha256.New() |
| // 以用户名 note 时间戳做哈希 |
| sha.Write([]byte(username)) |
| sha.Write([]byte(note)) |
| now := strconv.FormatInt(time.Now().UnixNano(), 10) |
| sha.Write([]byte(now)) |
| |
| return hex.EncodeToString(sha.Sum(nil)[:constant.TokenLength/2]) |
| } |
| |
| func GenerateCommitName(userName, RepositoryName string) string { |
| sha := sha256.New() |
| // 以用户名 note 时间戳做哈希 |
| sha.Write([]byte(userName)) |
| sha.Write([]byte(RepositoryName)) |
| now := strconv.FormatInt(time.Now().UnixNano(), 10) |
| sha.Write([]byte(now)) |
| bytes := sha.Sum(nil) |
| |
| return hex.EncodeToString(bytes[:constant.CommitLength/2]) |
| } |