1/* 2 * Copyright (c) 2024-2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import * as crypto from 'crypto'; 17 18export class CryptoUtils { 19 public static sha256(content: string): string { 20 return this.hash(content, 'sha256'); 21 } 22 23 public static hash(content: string, algorithm: string): string { 24 return crypto.createHash(algorithm).update(content).digest('base64url'); 25 } 26 27 public static hashcode(content: string): number { 28 let h = 0; 29 for (let i = 0; i < content.length; i++) { 30 h = (Math.imul(31, h) + content.charCodeAt(i)) | 0; 31 } 32 return h; 33 } 34} 35